<?xml version="1.0" encoding="utf-8"?>
<xbrl
  xml:lang="en-US"
  xmlns="http://www.xbrl.org/2003/instance"
  xmlns:cgnx="http://cognex.com/20211231"
  xmlns:country="http://xbrl.sec.gov/country/2021"
  xmlns:currency="http://xbrl.sec.gov/currency/2021"
  xmlns:dei="http://xbrl.sec.gov/dei/2021q4"
  xmlns:iso4217="http://www.xbrl.org/2003/iso4217"
  xmlns:link="http://www.xbrl.org/2003/linkbase"
  xmlns:srt="http://fasb.org/srt/2021-01-31"
  xmlns:us-gaap="http://fasb.org/us-gaap/2021-01-31"
  xmlns:xbrldi="http://xbrl.org/2006/xbrldi"
  xmlns:xlink="http://www.w3.org/1999/xlink"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <link:schemaRef xlink:href="cgnx-20211231.xsd" xlink:type="simple"/>
    <context id="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i7c2b1bb204e448309e5bf8b47a93c0d4_I20210704">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <instant>2021-07-04</instant>
        </period>
    </context>
    <context id="i8d58524b17ed4bb29e951219ac0be8d4_I20220130">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <instant>2022-01-30</instant>
        </period>
    </context>
    <context id="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i812edbd5d6934fd0927c267aff739860_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="ia081105dd8bd4aaaa1265cbf9c24acc2_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ic4a82097975f4c7480e06bdb28375b4a_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="ia991b13c7b074439964a26d579235ee4_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i96c261e6b700458483d45a690ef3428a_I20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="i3dd0ad0816aa4def98e84f22e19e80a7_I20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</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="id5144431cfa8410c8f5604b0516d97a6_I20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</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="i4c4fc943007b4423b33adbf4b3ff8a57_I20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</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="i7df50ac0cf1c4b6eb205200699db5753_I20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</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="ia0b61093361e40829a19e49f13b2aafd_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</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="i3f6e0d6a6cf64e53b765f2631064f2c6_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</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="i6c7a8f86994847a9817d41649947ff69_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</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="i11575d448348449484334a63f5c382ec_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</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="i453cd53948004e0aa6fa938860922977_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</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="i030b7b3d0bcc48ecaee75f945d4b0453_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</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="i7081618970d14cb2b47071acddcb076f_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</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="iad4f0d348bb84191a2d66c6f05e66a42_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</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="i1bec50af29d2444694a1f7d69fe2b058_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i8fac328c7b7844fca914b7bdbd8ea7e3_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i48d09c6cdb894c68b3c08b6d002654ff_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i8c44a3dba82a42458c156905bedae3bf_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i9c19e11e3b0440699b8af52e65c3c7df_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i82c8153d3c304531b0e739269e49f99c_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i5da6d6afe29042359bdc6f1b874d4cb9_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="ie93e1f918c464567bea84b17ce78960c_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i244ddaa1d19d4552979ee78fc0a3848d_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i75a67c9bd3d748a19d8b927a5cd5d288_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i8212cb032773436bbdfb00f533e4b319_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="ia417c41204b44fc68c2a79deecb306f3_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i279b29b9bc484ec9be070b54e58d3f78_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="id7e84bf16cc948edbbb96f1890b28baa_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i09333c39ce8e4914b814b0cf653db4b2_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i042f17eb78834accb0d70fa7b6537a83_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:BuildingMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="id801c8716b924358a2daa2c6f91c5f88_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:BuildingImprovementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="ibfee573d2d284a1f84c3f5cbf02272fe_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">cgnx:ComputerHardwareAndSoftwareMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i12cf82d7d05c43c78d4287e35cb1a678_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">cgnx:ComputerHardwareAndSoftwareMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i5ba256ab1ad54ee2ac2ea52472b19a75_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:DistributionRightsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i826aff0c969544a5a804571eeeecac12_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:DistributionRightsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i07d0abac57a84971819cba5bcc94c1b8_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">cgnx:CompletedTechnologiesAndOtherIntangibleAssetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i7caad8bad2f949faa4c2da1d3c09973c_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">cgnx:CompletedTechnologiesAndOtherIntangibleAssetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i2df6b1ea5d014738bb3c1b4fac6bafca_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">cgnx:CustomerContractsAndRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="ic244bf99eff947c5a9ba44ab7a5b9152_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">cgnx:CustomerContractsAndRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="iaa1b11b85a46401f88392449fde4ff94_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</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>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i8f47b56746584e8cb790dd66dabcb5bd_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</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>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i498bff2ae83341f19a665c2ba6f5f152_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TrademarksMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i258063d49d9b48f296f8e28b9d01a914_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i2bdea3feb5ee4e4395116243f2bbd0f8_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i4edf2b491ae343058e414bb114b696ff_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</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>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i487b1fa56179474584006ee96f49cb3b_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</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>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="icac4a2d4e54740b7ba386ffd5cac93b9_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:FurnitureAndFixturesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i867b84c7e5284728a5c3229df8312988_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:FurnitureAndFixturesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="ib0c023c21ea94cfda67a9aed5e4824e6_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</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>2021-12-31</instant>
        </period>
    </context>
    <context id="i596d75bc930d4fa195d274ceea0712fa_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</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>2021-12-31</instant>
        </period>
    </context>
    <context id="i18231fa7d3004cc8abb3dccaed931dfe_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</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>2021-12-31</instant>
        </period>
    </context>
    <context id="icbe413b8380b4b74b96766d056cfe1be_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:GViVenturesInc.Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i7916769b28254833942a005f3b6b3b20_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:ChiaroTechnologiesLLCMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i1ba31dc29f6e4fd583635b026a78c70e_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:GViVenturesInc.Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="iff8191abdb834fa281b3e2476e14a7dc_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:GViVenturesInc.Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="id9c74275ab59442fb9ded8deb5674d28_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:GViVenturesInc.Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i7222cc20036644a3b44ea75faaa45733_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:GViVenturesInc.Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ib02ea70179e047879c445fd8d0e9275f_D20200330-20200628">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <startDate>2020-03-30</startDate>
            <endDate>2020-06-28</endDate>
        </period>
    </context>
    <context id="if966d66dc65b48d6a93258061bcc3600_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i4a1ad4199837427496d93ed692b52cac_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i985bf57ca9034add86f8477105710972_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i258ae9fc57d74aa6b16c0989df29cb9b_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateBondSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i80e0e9f13cd94edeb850daaf5cbf340a_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateBondSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="idc23ae27e8c045be80b9ae12562de1e4_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:AssetBackedSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="iba5325337fb447629dd40761b20085ac_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:AssetBackedSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i4f034dcc34ec4f97b1b287538da11e25_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USTreasuryBillSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="id45501f2632647e7bbcd9975d9d5f9b8_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USTreasuryBillSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i2e6e3966f74d464096c8781827b91619_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:MunicipalBondsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i70319cf3a4cf43499a8860f2430ec150_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:MunicipalBondsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i0502b4b2a04743ed970b8454fdfdf9e1_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">cgnx:AgencyBondsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i1fc3fbc333a64fb2a5e6449b7f32a8a3_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">cgnx:AgencyBondsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i1efe35c9a2da425e8ed4586c7a51eda9_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:SovereignDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i1bbde01d9d9f47dab768ca3b0748fef3_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:SovereignDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i5270f007445d4f288628feb6aa72bd8d_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateBondSecuritiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:InvestmentTypeAxis">us-gaap:ShortTermInvestmentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i0bb7d91c89c140edb09cd5c36634ea3a_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:AssetBackedSecuritiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:InvestmentTypeAxis">us-gaap:ShortTermInvestmentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i5bcf06fc6e654f668da80ed998328a22_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USTreasurySecuritiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:InvestmentTypeAxis">us-gaap:ShortTermInvestmentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ibeb1eba6e1a94b98aaa8ea87f184efb0_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:MunicipalBondsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:InvestmentTypeAxis">us-gaap:ShortTermInvestmentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i6ec0d0fb26044e35997ce16c3db61e60_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">cgnx:AgencyBondsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:InvestmentTypeAxis">us-gaap:ShortTermInvestmentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i576160d57c9b437b9a770c73f2dfb9e0_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateBondSecuritiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:InvestmentTypeAxis">cgnx:LongTermInvestmentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ied62dc4cfad5417a8633ac6443c3d7ea_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:AssetBackedSecuritiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:InvestmentTypeAxis">cgnx:LongTermInvestmentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i5dfe7c62945b4ac1ae3a7fc0704e6eda_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USTreasurySecuritiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:InvestmentTypeAxis">cgnx:LongTermInvestmentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i146468f197ec4ffaaf568dea9d808150_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">cgnx:AgencyBondsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:InvestmentTypeAxis">cgnx:LongTermInvestmentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ie09121a494bc4ffb945fdfa43d22add3_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:SovereignDebtSecuritiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:InvestmentTypeAxis">cgnx:LongTermInvestmentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i901039d16aa346d6b2d5832a09c9e94e_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:MunicipalBondsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:InvestmentTypeAxis">cgnx:LongTermInvestmentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i56de818c0a5f4e8eacf53b04d2ab45e4_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USTreasurySecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="id5d7726e056e4214aa7f49e065353761_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:LandMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i64fc80d231e947aa9bf222b2de427dac_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:LandMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i8bbd57d8b5e24e379260a83a26e0335d_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:BuildingMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i6c11c5f296d94cb8b215d81fb2599862_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:BuildingMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i941a6d85ef5e4db6887a4477c54ad5ec_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:BuildingImprovementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="iaa0e107732624743b8b9116c079cf534_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:BuildingImprovementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="ifa4fc42921044fb2acd09f06fc702f0e_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:LeaseholdImprovementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i783fdc7f101e437ca76e266767bbed79_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:LeaseholdImprovementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i93a793acd6604354bfdeb7a098a7ab7c_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">cgnx:HardwareAndSoftwareMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i82d6f2a16b9647c5a4153885f8b16d0f_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">cgnx:HardwareAndSoftwareMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i237f0e88a14e4c138cf770014c3cff20_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:EquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ib4078ec246234f17861cbe7d06d41e4b_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:EquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i72196343338a4ad09f7dac2538d4ed3b_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:FurnitureAndFixturesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i22b7a4443157492c859ccb73ff921a37_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:FurnitureAndFixturesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i9680e81eb9994576b1c178a64360acd9_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertySubjectToOrAvailableForOperatingLeaseAxis">cgnx:SouthboroughMassachusettsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ic0eb9a7570944c1ab9168006bb2aa1e2_I20200628">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <instant>2020-06-28</instant>
        </period>
    </context>
    <context id="i955fae1ce0f246f2a6383d7e4314f3aa_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:ContractTerminationMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="idaa85ffc8fe24348a2c3c89ee7ee05da_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:ContractTerminationMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i30b6dbba7a294a05a1de3af16074b12b_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:SualabCo.Ltd.Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i9077befdd9a24efd88f7a65bb72737eb_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:DistributionRightsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i79c23c3a546a49569d45604d210eade1_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:DevelopedTechnologyRightsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i10f501ebc93e427c829a4d3c79634b1f_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">cgnx:CustomerContractsAndRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="iea58649cc4eb4b5fa55f83fe19cc0796_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:NoncompeteAgreementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ie2a20d1e0bed4733afa945949392815a_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TrademarksMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i497cc41f6abb47b884fd3672c59e3cb5_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:DistributionRightsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="if1cc1bfb37c149759d1841760856c173_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:DevelopedTechnologyRightsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="if88693d9f63d42edaaeff2d08d6a8a9b_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">cgnx:CustomerContractsAndRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="ie0c7309d4e304594823af30b7f8c6732_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:OtherIntangibleAssetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="icc1eb3d1f8994634b4304b31764535fe_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TrademarksMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i5694e3e1d7f2467781e7455fe169436f_D20200330-20200628">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:SualabCo.Ltd.Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:DevelopedTechnologyRightsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-03-30</startDate>
            <endDate>2020-06-28</endDate>
        </period>
    </context>
    <context id="ia44f7d0ad1ef42c39fdbc370ebfbe435_D20200330-20200628">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:SualabCo.Ltd.Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:IndefiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:InProcessResearchAndDevelopmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-03-30</startDate>
            <endDate>2020-06-28</endDate>
        </period>
    </context>
    <context id="i709ffb5b1f3f4e8a8d0cae96d0146633_D20200330-20200628">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:SualabCo.Ltd.Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">cgnx:CustomerContractsAndRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-03-30</startDate>
            <endDate>2020-06-28</endDate>
        </period>
    </context>
    <context id="ib58b9b72d04944dca738439418889e81_I20200526">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:EnShapeGmbHAbstract</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">cgnx:CustomerContractsAndRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-05-26</instant>
        </period>
    </context>
    <context id="i632328a9aece45169ee9a65a27b7de43_I20200628">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:EnShapeGmbHAbstract</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">cgnx:CustomerContractsAndRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-06-28</instant>
        </period>
    </context>
    <context id="i868c84ba01b343969f185bfae762ea09_D20200330-20200628">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:EnShapeGmbHAbstract</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">cgnx:CustomerContractsAndRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-03-30</startDate>
            <endDate>2020-06-28</endDate>
        </period>
    </context>
    <context id="i8403092ce78e46f287d80209e29e1af1_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i7cf72059f5c5494e9b87d60f4bc24e98_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:EUR</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i46b3383699f54592b7ede9d54961aeb6_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:EUR</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i00459c765246439382160d7274b765d4_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:CNY</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ia68a5da34e724a81893bf9be3e413d8c_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:CNY</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i7aa4b68725474c2cbfcfc2ff1cf9c610_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:MXN</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="iad34d6812e224628aaf77d2b49448365_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:MXN</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="ia4ac27b77f9347d59de048dc447103ab_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:JPY</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i93ebcd0f4d05432abddab316785497af_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:JPY</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i71a8b16636c744088ae729b18fffb3af_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:GBP</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i233b3e65c4014824a116028552a33e6b_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:GBP</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i4c575fbed7374c838d828cf6cf30c79c_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:HUF</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i45f95c900587476f9a93fde30adfbaf1_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:HUF</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="iccaf5fac85854bc78b3b41877b85ec45_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:CAD</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="iec122b031b4a4ca6b3633d5405753240_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:CAD</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="ibaaae7dc618d498782e79c903a2d481b_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:KRW</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i497d9d68981c44ebb35250193a714eb7_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:KRW</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i00a64ebf1e97460399ab2caa80730e9b_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:TWD</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ia7422c5d263441d58ee5c68d7143fed0_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:TWD</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="if322716820c4489ab6cadd0ef3660c0a_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:SGD</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i6c8355418cf24fdd81200d77b1ee46b9_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:SGD</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i9c4108ecbb154b9689e5bb60e97d0990_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:PrepaidExpensesAndOtherCurrentAssetsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="if647a88887404ad0929e10c5f5dee470_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:PrepaidExpensesAndOtherCurrentAssetsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i7b4846a2320b403d951b251fe43bd88b_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">cgnx:AccruedExpensesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i7d912f3d97904dfbba9ec1dc3cc1dfda_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">cgnx:AccruedExpensesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i7738a97fca024a00829bfaed4f536e63_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:ForeignCurrencyGainLossMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i9ba0ae2aca854dc3accbe251cf58f567_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:ForeignCurrencyGainLossMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i80a722d47fc34f3388de28ec4399d41e_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:ForeignCurrencyGainLossMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i60257de642494bd1a3f4066707e2f9c2_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:AmericasMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i8b857d6347784d988a40fca03c6bd5be_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:AmericasMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i565882183d72492aba9afe23745416e2_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:AmericasMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="icdd53699b9af4b4388009f695891ea3f_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="ib6352ba54d8946149998f1a1bbe233e0_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="ib7c3d649737648878f8b4fc1a2876f26_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</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="i3dc436c98f1d4e0792723c1df4fcf255_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">cgnx:GreaterChinaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="ie0c6ac0bfff04b6a9c0d23f2260b4c7f_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">cgnx:GreaterChinaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i717eab74d0194494b7a2294ffc0e7273_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">cgnx:GreaterChinaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i9478b847f49e4115928476734dea9c64_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">cgnx:OtherAsiaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="if9fc10a69f254823a47c3b4444adf857_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">cgnx:OtherAsiaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="ia09d8e352163476a90fdecfca35298c5_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">cgnx:OtherAsiaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i978d0a39464248048a6adfb0338684b7_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">cgnx:StandardProductandServicesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="if8ddf600fc0548fd9b6824b8496ad6bd_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">cgnx:StandardProductandServicesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="icccce2aa3ff74ec8a00c89034af41fc6_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">cgnx:StandardProductandServicesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i4d3eb05597f64cf7a138bef69f2aa751_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">cgnx:ApplicationofCustomerSpecificSolutionsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i25c7239e696d401ab604a30f0c0518a0_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">cgnx:ApplicationofCustomerSpecificSolutionsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i3215f7665a784c45aa04c3aae867d897_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">cgnx:ApplicationofCustomerSpecificSolutionsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="ia18096d71003430faf7fc3b7199862b2_I20160427">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <instant>2016-04-27</instant>
        </period>
    </context>
    <context id="ibc957dc1955640e68337295dda8c967f_I20180425">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <instant>2018-04-25</instant>
        </period>
    </context>
    <context id="ic97efe271a134f3bb78c5e0f0c609dcf_I20160428">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <instant>2016-04-28</instant>
        </period>
    </context>
    <context id="icee5a3a1e242481d9356d6512fd34156_I20181029">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ShareRepurchaseProgramAxis">cgnx:RepurchaseProgramOctober2018Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-10-29</instant>
        </period>
    </context>
    <context id="i88965a860e684ef3a6ed5d4f06b8baaf_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ShareRepurchaseProgramAxis">cgnx:RepurchaseProgramOctober2018Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="ifb411f18f9444b618c0b5722a8f4c8c9_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ShareRepurchaseProgramAxis">cgnx:RepurchaseProgramOctober2018Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="iec44922cbbe14b39918906b53d07cce4_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ShareRepurchaseProgramAxis">cgnx:RepurchaseProgramOctober2018Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="ib603cdbab9484789a7f90ba5470fa1fc_I20200312">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ShareRepurchaseProgramAxis">cgnx:RepurchaseProgramMarch2020Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-03-12</instant>
        </period>
    </context>
    <context id="i268f447259bc49a5b4b4ad1f494cb6a4_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ShareRepurchaseProgramAxis">cgnx:RepurchaseProgramMarch2020Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i10dc5333496046ad93d3758e0acfd0ad_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ShareRepurchaseProgramAxis">cgnx:RepurchaseProgramMarch2020Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i6b8a386974cc4d9ba5c5b000e859ee31_D20190101-20190929">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-09-29</endDate>
        </period>
    </context>
    <context id="idf4cd8f218d9414faa06b3c55217d8fe_D20190930-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <startDate>2019-09-30</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="icf5af4f37b30453da1856b17e836038f_D20200928-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <startDate>2020-09-28</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i92b408fed68541808d3ffb0dc09c1308_D20211004-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <startDate>2021-10-04</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i22ac892990aa4be6bea90ca4813eba67_D20201228-20201228">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <startDate>2020-12-28</startDate>
            <endDate>2020-12-28</endDate>
        </period>
    </context>
    <context id="i39707b072766401697c047f98d14f735_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i022e4a867cb7496bb1fdb7061bcf122b_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</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>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="idd5ac6d2068247fbaaf23d9582522e3a_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</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>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i45c675b042014dca8b974960686e1ed3_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="ib1a2499886a74a06992d20a3f6b53efb_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:PerformanceSharesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="iefdedbfc9aff4869b115c5161b1da2bb_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i0d1c49bfe1e0495aa82309bb0b273324_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</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="i0d2d7b131c914aa3813c98711237ce0c_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i2a5930f20d2940f2a4357322a9224439_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i2f16b1d9b8104848916e7ec017bf2b2a_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="icace5d553dd64444a04f231db888b7ef_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockUnitsRSUMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="ie01ba116a66c474d84265161be749d7d_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockUnitsRSUMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i84da32e16b6e4d98bbab4cb608388e92_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockUnitsRSUMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="ia5a436cb2a4b40208126b213a56803a5_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">cgnx:ProductCostOfRevenueMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="id25aced7c5bb44fe800cc559f6166ff8_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">cgnx:ProductCostOfRevenueMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i2f165371239b461d8c3a62bad05a3b86_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">cgnx:ProductCostOfRevenueMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="if8ab3d4c8f6a477f9e4c9e2b8888052a_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:ResearchAndDevelopmentExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i6b6b154e38b2410788bce4314a3d47bf_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:ResearchAndDevelopmentExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="id16927732c3f42ae9f82e1e9ddd307ed_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</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="i52df1bc9391d4aeeb11bfa4d9b3d10b8_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">cgnx:SellingGeneralAndAdministrativeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i5b1d16e2e3c74de6973268b28ba5fc9c_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">cgnx:SellingGeneralAndAdministrativeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="if66ef68195be46f98ef233ab367cb7c7_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">cgnx:SellingGeneralAndAdministrativeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="ie2cecd8166824b219b0f762f0d92690b_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:PerformanceSharesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i9568c4e4a0874adbbd54fef546d68a10_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RestatementAxis">srt:ScenarioPreviouslyReportedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i4e18898fe1bc40759e924f6337eb36ea_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RestatementAxis">srt:RestatementAdjustmentMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ChangeInAccountingEstimateByTypeAxis">cgnx:ChangeinGlobalIntangibleLowTaxedIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i210d844bbf8c44ac9ab4092887e0fc9a_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RestatementAxis">srt:ScenarioPreviouslyReportedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i22f2ff4a0c6b4d62832ca2df6fbe48a5_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RestatementAxis">srt:RestatementAdjustmentMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ChangeInAccountingEstimateByTypeAxis">cgnx:ChangeinGlobalIntangibleLowTaxedIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i9c502ee279f04030a69eee355d54bd16_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="cgnx:DiscreteTaxItemsAxis">cgnx:ForeignTaxBenefitGainsTaxedOutsideUSMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i9f2450d3a26446f4b85444fb9284cece_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="cgnx:DiscreteTaxItemsAxis">cgnx:ForeignTaxExpenseTransferPriceAdjustmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="ia5768b0e810e4157b4eae97d0d1b08c6_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="cgnx:DiscreteTaxItemsAxis">cgnx:DiscreteTaxExpenseForeignTaxFilingAdjustmentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i4452ed78907f4d219ac405351100fab2_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:SualabCo.Ltd.Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i4bc97ab3a3094188b15fe79424b28ed5_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:SualabCo.Ltd.Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="iffc7295ab67445f8bd6fc5841d17366c_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:ForeignCountryMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityNameAxis">us-gaap:RevenueCommissionersIrelandMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i6a2c8b01c55f45a383585d973a17734e_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:ForeignCountryMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityNameAxis">us-gaap:StateAdministrationOfTaxationChinaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="ia7b70df5ca144c19aa32c0b1861d055c_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:ForeignCountryMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityNameAxis">country:KP</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i0c3c1c01066849da8660af393f5f2d8c_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:DomesticCountryMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="id624ea8a42db4ca6a9c8968c5c834a62_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:TaxCreditCarryforwardAxis">us-gaap:ResearchMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i2d7f829283d84ef790a2db8c1f7a3fcc_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:TaxCreditCarryforwardAxis">cgnx:StateResearchAndExperimentationMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i7c9f8c01dcbb4324b28ecd41ace87fd9_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i8bd1c6a0aebf4c03923831a10dbbf2a6_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i197680ce6f4a47b08921cc9e95e40369_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="ic686f763cf704bc2867ccfd9c33dc6c7_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i35cd9fec0a4c4a84826235af293727b2_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="ica46cebde58f4747ba082879193d850e_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="ia69b052cbadd44c094541da53ba42a51_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="ic575a52a81ce437ca78b900c07321681_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">cgnx:OtherGeographicAreaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="idcbb00e30a054c9b8dc545052284d730_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ib4cda65b83b74a7dbc080d8fedc4d2d9_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ib4944b90959b4b208c0bdfb2c87ee10e_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">cgnx:GreaterChinaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ic40beac310a64112b7eb01f6089573c1_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">cgnx:OtherGeographicAreaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="id5d24b55c6524d6790756827a7d2e825_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="ibf814c6bf04c4e9f9549f0a609b74a55_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">cgnx:OtherGeographicAreaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="iaa126896ec044da89c6508ff396378a1_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="ibf2b1fc85cfa4174b619517220508ae0_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i3c5581736dbd4ad78c3d6e655e93c4ea_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">cgnx:GreaterChinaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="ife8b2f31ce1a4b4faa1a745448f716d4_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">cgnx:OtherGeographicAreaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i14b5eafbd9ff4be7b9cc2e0919d2dbc7_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</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="i4921f86f652d4f2e94c4bf9eb25c62e9_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">cgnx:OtherGeographicAreaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i6413254449a541988fcda017a15d0532_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="ieee8eed26dbb44f6aae613473b0dd2ef_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="ic693d5b307414a6c964e0ec425adb970_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">cgnx:GreaterChinaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="ic325874dd99f48839c0a0457e159b140_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">cgnx:OtherGeographicAreaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="if4d3420bee2e4188a13523c87c8f50bf_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:MajorCustomersAxis">cgnx:Customer2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:SalesRevenueNetMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i7f7dc7e149214e86b41eb5b243af420c_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:MajorCustomersAxis">cgnx:Customer2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:SalesRevenueNetMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i4b9aad94c75f49d5ae535996bb5e0901_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:MajorCustomersAxis">cgnx:Customer2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:AccountsReceivableMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i7c5b8c599c9542b590f4d0e8f2ced040_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:MajorCustomersAxis">cgnx:Customer2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:AccountsReceivableMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i64c87fe8f4fd462c8a6abc5bb13ea76c_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:MajorCustomersAxis">cgnx:Customer1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:SalesRevenueNetMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="iaf6c363e3eef41d1b00219abbd835f2d_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:MajorCustomersAxis">cgnx:Customer1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:AccountsReceivableMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i93b04104f7b44c7996743be1d0745981_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:MajorCustomersAxis">cgnx:Customer1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:AccountsReceivableMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i0b6307f55f5e4750a8f66d44f395a2ba_D20191016-20191016">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:SualabCo.Ltd.Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-10-16</startDate>
            <endDate>2019-10-16</endDate>
        </period>
    </context>
    <context id="i237d35dadb3345778dc0eb90a293a886_D20200928-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:SualabCo.Ltd.Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-09-28</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i9d7909d7f5534ecaae7d688eb528cbe5_I20191016">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:SualabCo.Ltd.Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-10-16</instant>
        </period>
    </context>
    <context id="i9ff3a1f2d3354f8b9e1a3862c0d45393_I20200526">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <instant>2020-05-26</instant>
        </period>
    </context>
    <context id="i37df6f70493e443da67537c212115ae6_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:OneTimeTerminationBenefitsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i0045cc5a44304747895b82294c5175c6_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:ContractTerminationMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="if297a806261f492eba965b248dda338d_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:OtherRestructuringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i7a0d52863fc64903a1109399c06704c4_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:OneTimeTerminationBenefitsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="idb40d4ead52e4f36857491315a43c857_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:ContractTerminationMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="iba8f6eeab77d4be9ab1ba46ab39e7c44_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:OtherRestructuringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="ic9333dbc34ff416cb78724fc271fe455_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i9ceed9a458bf44ee8b056fd943935d7b_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:OneTimeTerminationBenefitsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="ia041977fa65d4c6aaae16793e77f0f59_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:ContractTerminationMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="iea33b0ef270a4304a674a351f2a3ea2c_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:OtherRestructuringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i0667b335c8d842be8dbe3b6c483d1fba_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="ib7bc21127ccf42c5bc8aaa79832c5c1a_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:OneTimeTerminationBenefitsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="ie3121f3a9e4f4a46a3cc68910d57a5fd_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:ContractTerminationMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="ia644d53df91e4028845acea026614935_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:OtherRestructuringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i718830787ba64d9698a6ce9053392157_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i866e735aa0864c379813d523bdaf5c23_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:OneTimeTerminationBenefitsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i37af8fbc3f53404ab2fef91376a1d69c_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:ContractTerminationMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="id47c906173ab4edf85ec11a56adf1772_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:OtherRestructuringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i17e03758bb2b4992a21fd36d624da0aa_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="ib389c9638e4c4a1d98465f63dd2ef34f_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:OneTimeTerminationBenefitsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="iee99fc76bf3243cbb665a0905540cbb9_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:ContractTerminationMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i0c0cc45df87a4b288075510563ebd8e5_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:OtherRestructuringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="iac93fa12ce9346e89d74784d16a4f197_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ia0707d1af0314a219bcf26b1a7beb49a_I20220217">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:SubsequentEventTypeAxis">us-gaap:SubsequentEventMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-02-17</instant>
        </period>
    </context>
    <context id="i95b24cde8acc45068c6d6ce49f08b624_D20220217-20220217">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:SubsequentEventTypeAxis">us-gaap:SubsequentEventMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-02-17</startDate>
            <endDate>2022-02-17</endDate>
        </period>
    </context>
    <context id="i6d0d3605ae3a47539276eb78b04403f8_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:UncollectibleReceivablesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i59ec5527ba8e4d059be06b2de8827813_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:UncollectibleReceivablesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i5ee1836468e946feba304dc524cc45e2_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:UncollectibleReceivablesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i3dbe155ff0004ff98791a6784bd4c861_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:UncollectibleReceivablesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i770852fc55a6463e8da481d0bf571699_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:UncollectibleReceivablesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="id3be38a15bc644abb5cb39c413e9327b_I20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:UncollectibleReceivablesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="iee5da482094546e299baa3d92293d330_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:UncollectibleReceivablesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i2131ea7c04b54b24a5d7cbceda55413f_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:SalesReturnsAndAllowancesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i32a8205607454b739eb248993c515fd1_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:SalesReturnsAndAllowancesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i72aa6831b808442cacbb8b5967d7fa20_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:SalesReturnsAndAllowancesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ib429e8609f0f44a1954e51d83ac80522_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:SalesReturnsAndAllowancesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i569ccce4c96e48c391d700361bf6abcc_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:SalesReturnsAndAllowancesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i407ba1b76823440abdd13f6172c63277_I20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:SalesReturnsAndAllowancesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="if82943db9b87496a88e504bd346dacaa_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:SalesReturnsAndAllowancesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i1602cc3e102c42a98e804619365a09b5_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:ValuationAllowanceOfDeferredTaxAssetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="ic9d78e6e8ba84362a8454525b56bf115_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:ValuationAllowanceOfDeferredTaxAssetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="idf98d43520b547b68e3e7b727e376e60_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:ValuationAllowanceOfDeferredTaxAssetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i4b26a9dc49044a46bd0bf68ff53f08b8_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:ValuationAllowanceOfDeferredTaxAssetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i2aee6672bd814cc595d6c10f9eedd0b1_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:ValuationAllowanceOfDeferredTaxAssetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i3c925d5554374d1da0be16bce2fc2da0_I20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:ValuationAllowanceOfDeferredTaxAssetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="icfc8e314ebfc49b191e6b222139a7a1a_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:ValuationAllowanceOfDeferredTaxAssetsMember</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="shares">
        <measure>shares</measure>
    </unit>
    <unit id="usdPerShare">
        <divide>
            <unitNumerator>
                <measure>iso4217:USD</measure>
            </unitNumerator>
            <unitDenominator>
                <measure>shares</measure>
            </unitDenominator>
        </divide>
    </unit>
    <unit id="number">
        <measure>pure</measure>
    </unit>
    <unit id="eur">
        <measure>iso4217:EUR</measure>
    </unit>
    <unit id="cny">
        <measure>iso4217:CNY</measure>
    </unit>
    <unit id="mxn">
        <measure>iso4217:MXN</measure>
    </unit>
    <unit id="jpy">
        <measure>iso4217:JPY</measure>
    </unit>
    <unit id="gbp">
        <measure>iso4217:GBP</measure>
    </unit>
    <unit id="huf">
        <measure>iso4217:HUF</measure>
    </unit>
    <unit id="cad">
        <measure>iso4217:CAD</measure>
    </unit>
    <unit id="krw">
        <measure>iso4217:KRW</measure>
    </unit>
    <unit id="twd">
        <measure>iso4217:TWD</measure>
    </unit>
    <unit id="sgd">
        <measure>iso4217:SGD</measure>
    </unit>
    <unit id="vote">
        <measure>cgnx:Vote</measure>
    </unit>
    <unit id="group">
        <measure>cgnx:group</measure>
    </unit>
    <unit id="segment">
        <measure>cgnx:Segment</measure>
    </unit>
    <unit id="employees">
        <measure>cgnx:Employees</measure>
    </unit>
    <dei:AmendmentFlag
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF80L2ZyYWc6NGMzNTI0NmJhZTEzNDIyZWEyNzI2ZmZiZmExOWUwMDcvdGFibGU6Yzk3NWZkZjMxMjM4NDI3YmFjODQwOGE3YjlhNGY1YjMvdGFibGVyYW5nZTpjOTc1ZmRmMzEyMzg0MjdiYWM4NDA4YTdiOWE0ZjViM18yLTEtMS0xLTI4ODA1_96c4b33c-4ce3-4130-b9b2-59c8082307da">false</dei:AmendmentFlag>
    <dei:DocumentFiscalYearFocus
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF80L2ZyYWc6NGMzNTI0NmJhZTEzNDIyZWEyNzI2ZmZiZmExOWUwMDcvdGFibGU6Yzk3NWZkZjMxMjM4NDI3YmFjODQwOGE3YjlhNGY1YjMvdGFibGVyYW5nZTpjOTc1ZmRmMzEyMzg0MjdiYWM4NDA4YTdiOWE0ZjViM180LTEtMS0xLTI4ODA1_10f46249-f5cb-4c36-9134-725f22c37537">2021</dei:DocumentFiscalYearFocus>
    <dei:DocumentFiscalPeriodFocus
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF80L2ZyYWc6NGMzNTI0NmJhZTEzNDIyZWEyNzI2ZmZiZmExOWUwMDcvdGFibGU6Yzk3NWZkZjMxMjM4NDI3YmFjODQwOGE3YjlhNGY1YjMvdGFibGVyYW5nZTpjOTc1ZmRmMzEyMzg0MjdiYWM4NDA4YTdiOWE0ZjViM181LTEtMS0xLTI4ODA1_7bff3197-4c9c-4d32-bfa7-c95732e3c4ac">FY</dei:DocumentFiscalPeriodFocus>
    <dei:EntityCentralIndexKey
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF80L2ZyYWc6NGMzNTI0NmJhZTEzNDIyZWEyNzI2ZmZiZmExOWUwMDcvdGFibGU6Yzk3NWZkZjMxMjM4NDI3YmFjODQwOGE3YjlhNGY1YjMvdGFibGVyYW5nZTpjOTc1ZmRmMzEyMzg0MjdiYWM4NDA4YTdiOWE0ZjViM184LTEtMS0xLTI4ODA1_9d522d7c-aded-4a81-9385-7e99de9ede19">0000851205</dei:EntityCentralIndexKey>
    <dei:CurrentFiscalYearEndDate
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF80L2ZyYWc6NGMzNTI0NmJhZTEzNDIyZWEyNzI2ZmZiZmExOWUwMDcvdGFibGU6Yzk3NWZkZjMxMjM4NDI3YmFjODQwOGE3YjlhNGY1YjMvdGFibGVyYW5nZTpjOTc1ZmRmMzEyMzg0MjdiYWM4NDA4YTdiOWE0ZjViM185LTEtMS0xLTI4ODA1_07a7ab5b-c856-4a84-bd84-41588cc32226">--12-31</dei:CurrentFiscalYearEndDate>
    <dei:EntityCommonStockSharesOutstanding
      contextRef="i8d58524b17ed4bb29e951219ac0be8d4_I20220130"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF80L2ZyYWc6NGMzNTI0NmJhZTEzNDIyZWEyNzI2ZmZiZmExOWUwMDcvdGFibGU6Yzk3NWZkZjMxMjM4NDI3YmFjODQwOGE3YjlhNGY1YjMvdGFibGVyYW5nZTpjOTc1ZmRmMzEyMzg0MjdiYWM4NDA4YTdiOWE0ZjViM18xNy0yLTEtMS0yODgwNQ_623b05d3-f151-4608-9ada-b360087dd5c0"
      unitRef="shares">173915951</dei:EntityCommonStockSharesOutstanding>
    <dei:EntityPublicFloat
      contextRef="i7c2b1bb204e448309e5bf8b47a93c0d4_I20210704"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF80L2ZyYWc6NGMzNTI0NmJhZTEzNDIyZWEyNzI2ZmZiZmExOWUwMDcvdGFibGU6Yzk3NWZkZjMxMjM4NDI3YmFjODQwOGE3YjlhNGY1YjMvdGFibGVyYW5nZTpjOTc1ZmRmMzEyMzg0MjdiYWM4NDA4YTdiOWE0ZjViM18xOC0zLTEtMS0yODgwNQ_58cd1bc5-4454-40ca-a624-4feebaf40856"
      unitRef="usd">14919879186</dei:EntityPublicFloat>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfMS0xLTEtMS0yODgwNQ_83a8cb10-16a4-40b6-8fe9-849f80787413"
      unitRef="usd">776000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfMS0yLTEtMS0yODgwNQ_631b2888-620d-4792-b00f-1b18efca405e"
      unitRef="usd">831000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostCurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfMi0xLTEtMS0zNjE5Mw_4fed5f3f-060e-4c3d-942d-87fb3f35b180"
      unitRef="usd">137124000</us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostCurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfMi0yLTEtMS0zNjE5NQ_89e781cc-e420-4fc7-a6d4-759ea08f963c"
      unitRef="usd">102258000</us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostNoncurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfMy0xLTEtMS0zNjE5Nw_4dc47643-8ab9-4a72-8f4c-94d2b8d70733"
      unitRef="usd">587981000</us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostNoncurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostNoncurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfMy0yLTEtMS0zNjIwMA_dbdb6e3a-9cb3-43e9-a616-4ebdc34da03e"
      unitRef="usd">390417000</us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostNoncurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossCurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfNC0xLTEtMS0zNjIyNQ_54c9d95e-5fee-48f0-a663-9785d86bd2a1"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossCurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfNC0xLTEtMS0zNjIyNQ_d649e1c1-e3dc-4e47-8349-d990f93d7ce3"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossNoncurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfNS0xLTEtMS0zNjIyNw_a9ead8f8-6394-46ed-a1d6-02037a432097"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossNoncurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossNoncurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfNS0xLTEtMS0zNjIyNw_f370e15e-1ec4-4d36-a05d-4e0aeed10307"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossNoncurrent>
    <us-gaap:PreferredStockParOrStatedValuePerShare
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfMi0xLTEtMS0yODgwNQ_b63cef7d-d425-4617-8ff4-6da0c68d7b94"
      unitRef="usdPerShare">0.01</us-gaap:PreferredStockParOrStatedValuePerShare>
    <us-gaap:PreferredStockParOrStatedValuePerShare
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfMi0yLTEtMS0yODgwNQ_63e63726-e154-470c-a563-bbceb4afeeed"
      unitRef="usdPerShare">0.01</us-gaap:PreferredStockParOrStatedValuePerShare>
    <us-gaap:PreferredStockSharesAuthorized
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfMy0xLTEtMS0yODgwNQ_08af655f-6423-4502-9b7e-51a11a0ab7bc"
      unitRef="shares">400000</us-gaap:PreferredStockSharesAuthorized>
    <us-gaap:PreferredStockSharesAuthorized
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfMy0yLTEtMS0yODgwNQ_1b20f052-e697-43aa-937f-0fee38445e6c"
      unitRef="shares">400000</us-gaap:PreferredStockSharesAuthorized>
    <us-gaap:PreferredStockSharesIssued
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfNC0xLTEtMS0yODgwNQ_801947d5-0d41-4804-bec2-a183e8648086"
      unitRef="shares">0</us-gaap:PreferredStockSharesIssued>
    <us-gaap:PreferredStockSharesIssued
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfNC0yLTEtMS0yODgwNQ_93a5a155-d8d6-474e-8900-5a2fe5331385"
      unitRef="shares">0</us-gaap:PreferredStockSharesIssued>
    <us-gaap:PreferredStockSharesOutstanding
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfNS0xLTEtMS0yODgwNQ_15a939cb-85e6-40cc-a000-1238f8859044"
      unitRef="shares">0</us-gaap:PreferredStockSharesOutstanding>
    <us-gaap:PreferredStockSharesOutstanding
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfNS0yLTEtMS0yODgwNQ_bf780bba-da16-487d-95c6-dc97a08f599d"
      unitRef="shares">0</us-gaap:PreferredStockSharesOutstanding>
    <us-gaap:CommonStockParOrStatedValuePerShare
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfNi0xLTEtMS0yODgwNQ_8864173d-3b7d-4ca6-b3e8-2b2534c1b3ac"
      unitRef="usdPerShare">0.002</us-gaap:CommonStockParOrStatedValuePerShare>
    <us-gaap:CommonStockParOrStatedValuePerShare
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfNi0yLTEtMS0yODgwNQ_d63bff3a-9f20-4bad-9e25-c86270c913ba"
      unitRef="usdPerShare">0.002</us-gaap:CommonStockParOrStatedValuePerShare>
    <us-gaap:CommonStockSharesAuthorized
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfNy0xLTEtMS0yODgwNQ_4867219a-e15c-459d-b791-ba2bfaa16214"
      unitRef="shares">300000000</us-gaap:CommonStockSharesAuthorized>
    <us-gaap:CommonStockSharesAuthorized
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfNy0yLTEtMS0yODgwNQ_6c50ed95-5f9f-4d9d-84db-390459ec4a60"
      unitRef="shares">300000000</us-gaap:CommonStockSharesAuthorized>
    <us-gaap:CommonStockSharesIssued
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfOC0xLTEtMS0yODgwNQ_fd0f716b-376e-4c9a-aa0d-20c1d975335a"
      unitRef="shares">175481000</us-gaap:CommonStockSharesIssued>
    <us-gaap:CommonStockSharesIssued
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfOC0yLTEtMS0yODgwNQ_74165429-953f-42c4-92df-8759c83fcc78"
      unitRef="shares">175790000</us-gaap:CommonStockSharesIssued>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfOS0xLTEtMS0yODgwNQ_d7df0d42-18d2-4f16-b050-e2adb810f97f"
      unitRef="shares">175481000</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfOS0yLTEtMS0yODgwNQ_229ee341-6e69-476b-b35e-4d502d22d6d1"
      unitRef="shares">175790000</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85MS9mcmFnOjI4ZmVkYmNjZDMxMjQwOWVhYTM3MmM5NDhmZDIwNGMxL3RhYmxlOjYzMDg4M2I0YTk2YjQwMjBiZjRhZGM0Y2ZhMTRjMGM2L3RhYmxlcmFuZ2U6NjMwODgzYjRhOTZiNDAyMGJmNGFkYzRjZmExNGMwYzZfMi0xLTEtMS0yODgwNQ_03184ed3-fabc-433d-bb15-c8ab04367271"
      unitRef="usd">-2206000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85MS9mcmFnOjI4ZmVkYmNjZDMxMjQwOWVhYTM3MmM5NDhmZDIwNGMxL3RhYmxlOjYzMDg4M2I0YTk2YjQwMjBiZjRhZGM0Y2ZhMTRjMGM2L3RhYmxlcmFuZ2U6NjMwODgzYjRhOTZiNDAyMGJmNGFkYzRjZmExNGMwYzZfMi0yLTEtMS0yODgwNQ_9c1ff91f-f0d4-4169-a2d8-92ea42c27903"
      unitRef="usd">981000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85MS9mcmFnOjI4ZmVkYmNjZDMxMjQwOWVhYTM3MmM5NDhmZDIwNGMxL3RhYmxlOjYzMDg4M2I0YTk2YjQwMjBiZjRhZGM0Y2ZhMTRjMGM2L3RhYmxlcmFuZ2U6NjMwODgzYjRhOTZiNDAyMGJmNGFkYzRjZmExNGMwYzZfMi0zLTEtMS0yODgwNQ_0f290fc4-9459-493c-87a5-54f83094d026"
      unitRef="usd">515000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentTax
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85MS9mcmFnOjI4ZmVkYmNjZDMxMjQwOWVhYTM3MmM5NDhmZDIwNGMxL3RhYmxlOjYzMDg4M2I0YTk2YjQwMjBiZjRhZGM0Y2ZhMTRjMGM2L3RhYmxlcmFuZ2U6NjMwODgzYjRhOTZiNDAyMGJmNGFkYzRjZmExNGMwYzZfMy0xLTEtMS0yODgwNQ_15f4f65a-5101-47f4-83b7-3a6cadd4347c"
      unitRef="usd">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentTax
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85MS9mcmFnOjI4ZmVkYmNjZDMxMjQwOWVhYTM3MmM5NDhmZDIwNGMxL3RhYmxlOjYzMDg4M2I0YTk2YjQwMjBiZjRhZGM0Y2ZhMTRjMGM2L3RhYmxlcmFuZ2U6NjMwODgzYjRhOTZiNDAyMGJmNGFkYzRjZmExNGMwYzZfMy0yLTEtMS0yODgwNQ_5b8ab6ff-7ea9-4417-bfec-546e2e590793"
      unitRef="usd">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentTax
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85MS9mcmFnOjI4ZmVkYmNjZDMxMjQwOWVhYTM3MmM5NDhmZDIwNGMxL3RhYmxlOjYzMDg4M2I0YTk2YjQwMjBiZjRhZGM0Y2ZhMTRjMGM2L3RhYmxlcmFuZ2U6NjMwODgzYjRhOTZiNDAyMGJmNGFkYzRjZmExNGMwYzZfMy0zLTEtMS0yODgwNQ_2d300d2a-6bf8-4a53-8e2f-cbb0f1b5691f"
      unitRef="usd">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentTax>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="ibfee573d2d284a1f84c3f5cbf02272fe_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNzgyMQ_c33774f8-7ea1-4d45-9f46-f9e48f3888ad">P2Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i5ba256ab1ad54ee2ac2ea52472b19a75_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTUyOTQ_5ce0e008-7055-453c-8ab4-01cc6d71497e">P11Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i07d0abac57a84971819cba5bcc94c1b8_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTUzMzU_a0e5581d-45c8-4009-8aef-5032532f120c">P5Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i2df6b1ea5d014738bb3c1b4fac6bafca_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTUzNzY_6d2ebdfe-29d5-4397-b25e-08f04b35e467">P5Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="iaa1b11b85a46401f88392449fde4ff94_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTU0MTc_c368a7b6-2b8c-45a1-af82-100a86daedb3">P3Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <cgnx:ProductWarrantyPeriod
      contextRef="i258063d49d9b48f296f8e28b9d01a914_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTY3NDk_4673adf5-908a-4c87-aadc-eb029c283b79">P1Y</cgnx:ProductWarrantyPeriod>
    <us-gaap:AdjustmentForLongTermIntercompanyTransactionsNetOfTax
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDAvZnJhZzoxMTI3MjYwMGRmOTU0M2Y4OWQ1ZjJlM2JiMTk0MmIyNC90YWJsZTozMmY3OGM1NDE2ZDk0ZTIzYjM4NmUzNDA0OWNjMDA2OC90YWJsZXJhbmdlOjMyZjc4YzU0MTZkOTRlMjNiMzg2ZTM0MDQ5Y2MwMDY4XzEtMS0xLTEtMjg4MDU_19b8b182-396a-4f76-abcb-787b5092c642"
      unitRef="usd">1271000</us-gaap:AdjustmentForLongTermIntercompanyTransactionsNetOfTax>
    <us-gaap:AdjustmentForLongTermIntercompanyTransactionsNetOfTax
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDAvZnJhZzoxMTI3MjYwMGRmOTU0M2Y4OWQ1ZjJlM2JiMTk0MmIyNC90YWJsZTozMmY3OGM1NDE2ZDk0ZTIzYjM4NmUzNDA0OWNjMDA2OC90YWJsZXJhbmdlOjMyZjc4YzU0MTZkOTRlMjNiMzg2ZTM0MDQ5Y2MwMDY4XzEtMi0xLTEtMjg4MDU_56545d09-8dc0-46c0-8f60-597270c7de1c"
      unitRef="usd">1271000</us-gaap:AdjustmentForLongTermIntercompanyTransactionsNetOfTax>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="i4edf2b491ae343058e414bb114b696ff_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDAvZnJhZzoxMTI3MjYwMGRmOTU0M2Y4OWQ1ZjJlM2JiMTk0MmIyNC90YWJsZTozMmY3OGM1NDE2ZDk0ZTIzYjM4NmUzNDA0OWNjMDA2OC90YWJsZXJhbmdlOjMyZjc4YzU0MTZkOTRlMjNiMzg2ZTM0MDQ5Y2MwMDY4XzMtMS0xLTEtMjg4MDU_c3a44025-8221-45c1-968a-1fda78340a61">P2Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="ibfee573d2d284a1f84c3f5cbf02272fe_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDAvZnJhZzoxMTI3MjYwMGRmOTU0M2Y4OWQ1ZjJlM2JiMTk0MmIyNC90YWJsZTozMmY3OGM1NDE2ZDk0ZTIzYjM4NmUzNDA0OWNjMDA2OC90YWJsZXJhbmdlOjMyZjc4YzU0MTZkOTRlMjNiMzg2ZTM0MDQ5Y2MwMDY4XzMtMi0xLTEtMjg4MDU_43f7fe37-6c90-4c0b-97bd-a13614a09d2e">P2Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="i487b1fa56179474584006ee96f49cb3b_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDAvZnJhZzoxMTI3MjYwMGRmOTU0M2Y4OWQ1ZjJlM2JiMTk0MmIyNC90YWJsZTozMmY3OGM1NDE2ZDk0ZTIzYjM4NmUzNDA0OWNjMDA2OC90YWJsZXJhbmdlOjMyZjc4YzU0MTZkOTRlMjNiMzg2ZTM0MDQ5Y2MwMDY4XzQtMS0xLTEtMjg4MDU_85657f51-b583-48d9-b367-109fd1fb54a7">P5Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="icac4a2d4e54740b7ba386ffd5cac93b9_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDAvZnJhZzoxMTI3MjYwMGRmOTU0M2Y4OWQ1ZjJlM2JiMTk0MmIyNC90YWJsZTozMmY3OGM1NDE2ZDk0ZTIzYjM4NmUzNDA0OWNjMDA2OC90YWJsZXJhbmdlOjMyZjc4YzU0MTZkOTRlMjNiMzg2ZTM0MDQ5Y2MwMDY4XzYtMS0xLTEtMjg4MDU_bcf9da19-9308-49bf-bdc9-d0c1df8dec7f">P2Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="i867b84c7e5284728a5c3229df8312988_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDAvZnJhZzoxMTI3MjYwMGRmOTU0M2Y4OWQ1ZjJlM2JiMTk0MmIyNC90YWJsZTozMmY3OGM1NDE2ZDk0ZTIzYjM4NmUzNDA0OWNjMDA2OC90YWJsZXJhbmdlOjMyZjc4YzU0MTZkOTRlMjNiMzg2ZTM0MDQ5Y2MwMDY4XzctMS0xLTEtMjg4MDU_bc23334d-439e-4227-ac15-c8b6e2ff7299">P5Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <cgnx:MaximumInvestmentOfCompanyInPartnership
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDAvZnJhZzoxMTI3MjYwMGRmOTU0M2Y4OWQ1ZjJlM2JiMTk0MmIyNC90YWJsZTozMmY3OGM1NDE2ZDk0ZTIzYjM4NmUzNDA0OWNjMDA2OC90YWJsZXJhbmdlOjMyZjc4YzU0MTZkOTRlMjNiMzg2ZTM0MDQ5Y2MwMDY4XzgtMS0xLTEtMjg4MDU_7ef726fc-7212-4c85-9e91-3652f1102396"
      unitRef="number">0.05</cgnx:MaximumInvestmentOfCompanyInPartnership>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i5ba256ab1ad54ee2ac2ea52472b19a75_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDAvZnJhZzoxMTI3MjYwMGRmOTU0M2Y4OWQ1ZjJlM2JiMTk0MmIyNC90YWJsZTo2ZWQ2ODFlOTMyMTY0MzFkYjljMGI3NmQzMjcyNDlmNi90YWJsZXJhbmdlOjZlZDY4MWU5MzIxNjQzMWRiOWMwYjc2ZDMyNzI0OWY2XzEtMS0xLTEtMjg4MDU_ce6a46d0-92af-4737-85b1-7a9128340cc1">P11Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i2df6b1ea5d014738bb3c1b4fac6bafca_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDAvZnJhZzoxMTI3MjYwMGRmOTU0M2Y4OWQ1ZjJlM2JiMTk0MmIyNC90YWJsZTo2ZWQ2ODFlOTMyMTY0MzFkYjljMGI3NmQzMjcyNDlmNi90YWJsZXJhbmdlOjZlZDY4MWU5MzIxNjQzMWRiOWMwYjc2ZDMyNzI0OWY2XzItMS0xLTEtMjg4MDU_e930a41e-faf8-4792-af26-1fc6957e10d1">P5Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i07d0abac57a84971819cba5bcc94c1b8_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDAvZnJhZzoxMTI3MjYwMGRmOTU0M2Y4OWQ1ZjJlM2JiMTk0MmIyNC90YWJsZTo2ZWQ2ODFlOTMyMTY0MzFkYjljMGI3NmQzMjcyNDlmNi90YWJsZXJhbmdlOjZlZDY4MWU5MzIxNjQzMWRiOWMwYjc2ZDMyNzI0OWY2XzMtMS0xLTEtMjg4MDU_a7d6b555-53e4-465e-96e7-f1e169c45f3e">P5Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="iaa1b11b85a46401f88392449fde4ff94_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDAvZnJhZzoxMTI3MjYwMGRmOTU0M2Y4OWQ1ZjJlM2JiMTk0MmIyNC90YWJsZTo2ZWQ2ODFlOTMyMTY0MzFkYjljMGI3NmQzMjcyNDlmNi90YWJsZXJhbmdlOjZlZDY4MWU5MzIxNjQzMWRiOWMwYjc2ZDMyNzI0OWY2XzQtMS0xLTEtMjg4MDU_87507c2d-9122-4650-a296-806dc98ad785">P3Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <cgnx:ProductWarrantyPeriod
      contextRef="i258063d49d9b48f296f8e28b9d01a914_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDAvZnJhZzoxMTI3MjYwMGRmOTU0M2Y4OWQ1ZjJlM2JiMTk0MmIyNC90YWJsZTpmZmNmMjY5MDIwODQ0OWY1OWFkMWFlZGViYmY0YjQ2Ny90YWJsZXJhbmdlOmZmY2YyNjkwMjA4NDQ5ZjU5YWQxYWVkZWJiZjRiNDY3XzEtMS0xLTEtMjg4MDU_1b6414ee-54ad-432f-8e6a-3295d3c232b3">P1Y</cgnx:ProductWarrantyPeriod>
    <cgnx:RevenuePaymentTerms
      contextRef="i258063d49d9b48f296f8e28b9d01a914_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDAvZnJhZzoxMTI3MjYwMGRmOTU0M2Y4OWQ1ZjJlM2JiMTk0MmIyNC90YWJsZTo5YjkxY2YxYWU2NDQ0NzEwYjlkMzg2ZmQyODQwMWFmMS90YWJsZXJhbmdlOjliOTFjZjFhZTY0NDQ3MTBiOWQzODZmZDI4NDAxYWYxXzEtMS0xLTEtMjg4MDU_a959b7b6-1bba-4c75-88be-130943c35d0d">P30D</cgnx:RevenuePaymentTerms>
    <us-gaap:OtherThanTemporaryImpairmentLossDebtSecuritiesAvailableForSaleRecognizedInEarnings
      contextRef="if966d66dc65b48d6a93258061bcc3600_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTIvZnJhZzpkNmU1M2QwM2Y1NjA0NmE2YTQ4MWJkY2U1ZDBkYjQyZi90YWJsZToyMTdjYjI4ZGQ1ODk0NWQxYjk1YzZmM2E4OWQ1ZmU4Mi90YWJsZXJhbmdlOjIxN2NiMjhkZDU4OTQ1ZDFiOTVjNmYzYTg5ZDVmZTgyXzEtMS0xLTEtMjg4MDU_1a7229af-29cd-4f5a-966d-7eb6cd6d5004"
      unitRef="usd">0</us-gaap:OtherThanTemporaryImpairmentLossDebtSecuritiesAvailableForSaleRecognizedInEarnings>
    <us-gaap:OtherThanTemporaryImpairmentLossDebtSecuritiesAvailableForSaleRecognizedInEarnings
      contextRef="i4a1ad4199837427496d93ed692b52cac_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTIvZnJhZzpkNmU1M2QwM2Y1NjA0NmE2YTQ4MWJkY2U1ZDBkYjQyZi90YWJsZToyMTdjYjI4ZGQ1ODk0NWQxYjk1YzZmM2E4OWQ1ZmU4Mi90YWJsZXJhbmdlOjIxN2NiMjhkZDU4OTQ1ZDFiOTVjNmYzYTg5ZDVmZTgyXzEtMi0xLTEtMjg4MDU_a9997be3-20bb-40fb-9903-94c992ee26ee"
      unitRef="usd">0</us-gaap:OtherThanTemporaryImpairmentLossDebtSecuritiesAvailableForSaleRecognizedInEarnings>
    <us-gaap:OtherThanTemporaryImpairmentLossDebtSecuritiesAvailableForSaleRecognizedInEarnings
      contextRef="i985bf57ca9034add86f8477105710972_D20190101-20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTIvZnJhZzpkNmU1M2QwM2Y1NjA0NmE2YTQ4MWJkY2U1ZDBkYjQyZi90YWJsZToyMTdjYjI4ZGQ1ODk0NWQxYjk1YzZmM2E4OWQ1ZmU4Mi90YWJsZXJhbmdlOjIxN2NiMjhkZDU4OTQ1ZDFiOTVjNmYzYTg5ZDVmZTgyXzEtMy0xLTEtMjg4MDU_0176e4f9-b3aa-41dc-b4ab-2ccbb6198491"
      unitRef="usd">0</us-gaap:OtherThanTemporaryImpairmentLossDebtSecuritiesAvailableForSaleRecognizedInEarnings>
    <cgnx:OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent
      contextRef="if966d66dc65b48d6a93258061bcc3600_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTIvZnJhZzpkNmU1M2QwM2Y1NjA0NmE2YTQ4MWJkY2U1ZDBkYjQyZi90YWJsZToyMTdjYjI4ZGQ1ODk0NWQxYjk1YzZmM2E4OWQ1ZmU4Mi90YWJsZXJhbmdlOjIxN2NiMjhkZDU4OTQ1ZDFiOTVjNmYzYTg5ZDVmZTgyXzItMS0xLTEtMjg4MDU_cd33a4f3-f3e7-4c93-9606-f8ddf1248d0f"
      unitRef="usd">0</cgnx:OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent>
    <cgnx:OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent
      contextRef="i4a1ad4199837427496d93ed692b52cac_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTIvZnJhZzpkNmU1M2QwM2Y1NjA0NmE2YTQ4MWJkY2U1ZDBkYjQyZi90YWJsZToyMTdjYjI4ZGQ1ODk0NWQxYjk1YzZmM2E4OWQ1ZmU4Mi90YWJsZXJhbmdlOjIxN2NiMjhkZDU4OTQ1ZDFiOTVjNmYzYTg5ZDVmZTgyXzItMi0xLTEtMjg4MDU_75d1868b-911d-414a-8974-9db2e6f51fad"
      unitRef="usd">0</cgnx:OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent>
    <cgnx:OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent
      contextRef="i985bf57ca9034add86f8477105710972_D20190101-20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTIvZnJhZzpkNmU1M2QwM2Y1NjA0NmE2YTQ4MWJkY2U1ZDBkYjQyZi90YWJsZToyMTdjYjI4ZGQ1ODk0NWQxYjk1YzZmM2E4OWQ1ZmU4Mi90YWJsZXJhbmdlOjIxN2NiMjhkZDU4OTQ1ZDFiOTVjNmYzYTg5ZDVmZTgyXzItMy0xLTEtMjg4MDU_240c8e6c-f35e-41a1-b4e7-c014e96f1213"
      unitRef="usd">0</cgnx:OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleChangeInPresentValueExpenseReversal
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDU5L2ZyYWc6NTU5MmI4ODNiMWVjNDlhZmFiM2E3ODdmYWFlZDhkYTAvdGFibGU6MmNiMzAzMWI5MTBlNDI5OGE4NTUyNmZkMTc0ZTJiMWEvdGFibGVyYW5nZToyY2IzMDMxYjkxMGU0Mjk4YTg1NTI2ZmQxNzRlMmIxYV8xLTEtMS0xLTQ3NjM3_3cc1c130-c4ac-453a-b792-c5e254287fe0"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleChangeInPresentValueExpenseReversal>
    <us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossRecovery
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDU5L2ZyYWc6NTU5MmI4ODNiMWVjNDlhZmFiM2E3ODdmYWFlZDhkYTAvdGFibGU6MmNiMzAzMWI5MTBlNDI5OGE4NTUyNmZkMTc0ZTJiMWEvdGFibGVyYW5nZToyY2IzMDMxYjkxMGU0Mjk4YTg1NTI2ZmQxNzRlMmIxYV8yLTEtMS0xLTQ3NjM5_7f5da7d7-1e28-4be0-b441-f75316f6e46b"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossRecovery>
    <us-gaap:LesseeOperatingLeaseLiabilityUndiscountedExcessAmount
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDUyL2ZyYWc6ZjQ0YWRlYjg5YmQwNDBkNGEyNjdmNzg4MTVjODQ5ZTcvdGV4dHJlZ2lvbjpmNDRhZGViODliZDA0MGQ0YTI2N2Y3ODgxNWM4NDllN18xNjQ5MjY3NDQxNzMx_17dabb41-6ec0-4c46-bd6b-7d52cd0d26f0"
      unitRef="usd">2148000</us-gaap:LesseeOperatingLeaseLiabilityUndiscountedExcessAmount>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1
      contextRef="i022e4a867cb7496bb1fdb7061bcf122b_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzQxOQ_cac7f81a-55a4-43ac-b985-ca51aa05fe04">P4Y</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1
      contextRef="i022e4a867cb7496bb1fdb7061bcf122b_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjMvZnJhZzo1NTU4YjhlNmY3ZjY0MTk1YjE5NDU3YTI0YzVjOGY5Yy90YWJsZTpkZjllNDMzZWNmZGQ0ZjhkOThkY2Y1YmVkNjAyMDU4Yi90YWJsZXJhbmdlOmRmOWU0MzNlY2ZkZDRmOGQ5OGRjZjViZWQ2MDIwNThiXzItMS0xLTEtMjg4MDU_1bcc7ee2-6437-4560-bcb9-76e4a03f470e">P4Y</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1>
    <cgnx:EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjMvZnJhZzo1NTU4YjhlNmY3ZjY0MTk1YjE5NDU3YTI0YzVjOGY5Yy90YWJsZTpkZjllNDMzZWNmZGQ0ZjhkOThkY2Y1YmVkNjAyMDU4Yi90YWJsZXJhbmdlOmRmOWU0MzNlY2ZkZDRmOGQ5OGRjZjViZWQ2MDIwNThiXzUtMS0xLTEtMjg4MDU_16d6a44a-df22-40eb-897b-ab0bd0506541"
      unitRef="usd">0</cgnx:EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount>
    <cgnx:EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjMvZnJhZzo1NTU4YjhlNmY3ZjY0MTk1YjE5NDU3YTI0YzVjOGY5Yy90YWJsZTpkZjllNDMzZWNmZGQ0ZjhkOThkY2Y1YmVkNjAyMDU4Yi90YWJsZXJhbmdlOmRmOWU0MzNlY2ZkZDRmOGQ5OGRjZjViZWQ2MDIwNThiXzUtMi0xLTEtMjg4MDU_9782b5bf-cb2e-4a41-98d4-845f843b32cc"
      unitRef="usd">0</cgnx:EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount>
    <cgnx:EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount
      contextRef="ia991b13c7b074439964a26d579235ee4_I20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjMvZnJhZzo1NTU4YjhlNmY3ZjY0MTk1YjE5NDU3YTI0YzVjOGY5Yy90YWJsZTpkZjllNDMzZWNmZGQ0ZjhkOThkY2Y1YmVkNjAyMDU4Yi90YWJsZXJhbmdlOmRmOWU0MzNlY2ZkZDRmOGQ5OGRjZjViZWQ2MDIwNThiXzUtMy0xLTEtMjg4MDU_b79f38a1-b934-4a08-b8de-665830cc28f4"
      unitRef="usd">0</cgnx:EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1
      contextRef="ie2cecd8166824b219b0f762f0d92690b_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjMvZnJhZzo1NTU4YjhlNmY3ZjY0MTk1YjE5NDU3YTI0YzVjOGY5Yy90YWJsZTpkZjllNDMzZWNmZGQ0ZjhkOThkY2Y1YmVkNjAyMDU4Yi90YWJsZXJhbmdlOmRmOWU0MzNlY2ZkZDRmOGQ5OGRjZjViZWQ2MDIwNThiXzYtMS0xLTEtMjg4MDU_cf8a4e04-7919-4319-ada7-18af17a039cf">P3Y</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1>
    <us-gaap:DefinedContributionPlanEmployerMatchingContributionPercentOfMatch
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjkvZnJhZzo0MzE0ZmU4ZWMzNDM0MThkODlkNmMwNzExZmU0YTUxYi90YWJsZTpiODM5MjFkODAzMTg0MTlhYjVlMGRjYmEyNDk1OTg3Ny90YWJsZXJhbmdlOmI4MzkyMWQ4MDMxODQxOWFiNWUwZGNiYTI0OTU5ODc3XzEtMS0xLTEtMjg4MDU_3efe0d04-b2ec-434c-a86c-da2c01d788d0"
      unitRef="number">0.50</us-gaap:DefinedContributionPlanEmployerMatchingContributionPercentOfMatch>
    <us-gaap:NumberOfReportableSegments
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODQvZnJhZzpkNDVjNDljNjcyZGU0ZjUyYTAyZTU3Nzc4Y2E3Mjk3MC90ZXh0cmVnaW9uOmQ0NWM0OWM2NzJkZTRmNTJhMDJlNTc3NzhjYTcyOTcwXzMw_8e6d808e-86ea-43c7-9e6b-d1438214067d"
      unitRef="segment">1</us-gaap:NumberOfReportableSegments>
    <dei:DocumentType
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGV4dHJlZ2lvbjozNzRlODkyZmRhODc0Y2IyOTk0ZWY4YmM4ZWI0ZDhkYl8zMDYx_06284f82-4344-4b0d-9ab7-6a6010dff5f2">10-K</dei:DocumentType>
    <dei:DocumentAnnualReport
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGV4dHJlZ2lvbjozNzRlODkyZmRhODc0Y2IyOTk0ZWY4YmM4ZWI0ZDhkYl8zMDYy_9876166c-0457-454c-a55e-4ef7b62c998c">true</dei:DocumentAnnualReport>
    <dei:DocumentPeriodEndDate
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGV4dHJlZ2lvbjozNzRlODkyZmRhODc0Y2IyOTk0ZWY4YmM4ZWI0ZDhkYl8yMTQ_6e095cce-7998-43f4-967d-e8eca71f1719">2021-12-31</dei:DocumentPeriodEndDate>
    <dei:DocumentTransitionReport
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGV4dHJlZ2lvbjozNzRlODkyZmRhODc0Y2IyOTk0ZWY4YmM4ZWI0ZDhkYl8zMDYz_4d9a3c67-6e34-491a-88d1-617e8ab94100">false</dei:DocumentTransitionReport>
    <dei:EntityFileNumber
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGV4dHJlZ2lvbjozNzRlODkyZmRhODc0Y2IyOTk0ZWY4YmM4ZWI0ZDhkYl8zMDY0_b48c3cc7-ca0f-4c34-b9f4-e89ea66dc5a5">001-34218</dei:EntityFileNumber>
    <dei:EntityRegistrantName
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGV4dHJlZ2lvbjozNzRlODkyZmRhODc0Y2IyOTk0ZWY4YmM4ZWI0ZDhkYl8zMDY1_a3c6aad8-ac86-4000-992e-bae571b5ba6a">COGNEX CORP</dei:EntityRegistrantName>
    <dei:EntityIncorporationStateCountryCode
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGFibGU6ZDYyMWM2ZmJhMDAxNDhhODk3NTczZjVmZWVjZjJiNmEvdGFibGVyYW5nZTpkNjIxYzZmYmEwMDE0OGE4OTc1NzNmNWZlZWNmMmI2YV8wLTEtMS0xLTI4ODA1_be72d44d-9862-429b-8b70-f60e605dccfa">MA</dei:EntityIncorporationStateCountryCode>
    <dei:EntityTaxIdentificationNumber
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGFibGU6ZDYyMWM2ZmJhMDAxNDhhODk3NTczZjVmZWVjZjJiNmEvdGFibGVyYW5nZTpkNjIxYzZmYmEwMDE0OGE4OTc1NzNmNWZlZWNmMmI2YV8wLTMtMS0xLTI4ODA1_f56577dd-07d5-4003-8c21-f94585433ac3">04-2713778</dei:EntityTaxIdentificationNumber>
    <dei:EntityAddressAddressLine1
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGV4dHJlZ2lvbjozNzRlODkyZmRhODc0Y2IyOTk0ZWY4YmM4ZWI0ZDhkYl8zMDY4_2b688482-908c-45fc-9166-e45e1ac8cffc">One Vision Drive</dei:EntityAddressAddressLine1>
    <dei:EntityAddressCityOrTown
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGV4dHJlZ2lvbjozNzRlODkyZmRhODc0Y2IyOTk0ZWY4YmM4ZWI0ZDhkYl8zMDY5_dc6691fa-9f38-42c9-9b64-ad0d7316887a">Natick</dei:EntityAddressCityOrTown>
    <dei:EntityAddressStateOrProvince
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGV4dHJlZ2lvbjozNzRlODkyZmRhODc0Y2IyOTk0ZWY4YmM4ZWI0ZDhkYl8zMDcw_c03341e0-f275-413d-97d1-1c90cd1b5775">MA</dei:EntityAddressStateOrProvince>
    <dei:EntityAddressPostalZipCode
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGV4dHJlZ2lvbjozNzRlODkyZmRhODc0Y2IyOTk0ZWY4YmM4ZWI0ZDhkYl8zMDY2_3f3c79cf-7381-4087-9768-c40f27bf7b15">01760</dei:EntityAddressPostalZipCode>
    <dei:CityAreaCode
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGV4dHJlZ2lvbjozNzRlODkyZmRhODc0Y2IyOTk0ZWY4YmM4ZWI0ZDhkYl8zMDU5_ab15c2d6-bb85-4096-bfb5-8261b83e7861">508</dei:CityAreaCode>
    <dei:LocalPhoneNumber
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGV4dHJlZ2lvbjozNzRlODkyZmRhODc0Y2IyOTk0ZWY4YmM4ZWI0ZDhkYl8zMDYw_4e25b5b5-3520-45d0-9343-d897513db50a">650-3000</dei:LocalPhoneNumber>
    <dei:Security12bTitle
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGFibGU6MjUwZjVjZmJiYjgzNGViYzgyMTJjYTM2OGUzNGQ4NmQvdGFibGVyYW5nZToyNTBmNWNmYmJiODM0ZWJjODIxMmNhMzY4ZTM0ZDg2ZF8xLTAtMS0xLTI4ODA1_f742d775-afe1-476f-8170-9717a7959f22">Common Stock, par value $.002 per share</dei:Security12bTitle>
    <dei:TradingSymbol
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGFibGU6MjUwZjVjZmJiYjgzNGViYzgyMTJjYTM2OGUzNGQ4NmQvdGFibGVyYW5nZToyNTBmNWNmYmJiODM0ZWJjODIxMmNhMzY4ZTM0ZDg2ZF8xLTEtMS0xLTI4ODA1_7888db19-4168-4609-ba8e-ec27d9875298">CGNX</dei:TradingSymbol>
    <dei:SecurityExchangeName
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGFibGU6MjUwZjVjZmJiYjgzNGViYzgyMTJjYTM2OGUzNGQ4NmQvdGFibGVyYW5nZToyNTBmNWNmYmJiODM0ZWJjODIxMmNhMzY4ZTM0ZDg2ZF8xLTItMS0xLTI4ODA1_f33b0a2b-8c46-4318-98f4-73ff3b14e757">NASDAQ</dei:SecurityExchangeName>
    <dei:EntityWellKnownSeasonedIssuer
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGFibGU6NDc4NzQzYjZhYzcwNGRmMWFjNzNjMjFlOWUxYTU0NjYvdGFibGVyYW5nZTo0Nzg3NDNiNmFjNzA0ZGYxYWM3M2MyMWU5ZTFhNTQ2Nl8wLTItMS0xLTI4ODA1_09bbb11a-6fd9-4b8f-85b7-676f912cce64">Yes</dei:EntityWellKnownSeasonedIssuer>
    <dei:EntityVoluntaryFilers
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGFibGU6ZDQ1YzFlYmRhOTg3NDUwM2E4YWU1NTc0NDE4MGNlMDAvdGFibGVyYW5nZTpkNDVjMWViZGE5ODc0NTAzYThhZTU1NzQ0MTgwY2UwMF8wLTgtMS0xLTI4ODA1_4b838c7a-761f-4b2c-8b39-43031e060274">No</dei:EntityVoluntaryFilers>
    <dei:EntityCurrentReportingStatus
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGFibGU6ZWE0M2IyOTUxNzA0NDZkOWJiNGE0ZTM2NjE2Y2M1MDIvdGFibGVyYW5nZTplYTQzYjI5NTE3MDQ0NmQ5YmI0YTRlMzY2MTZjYzUwMl8wLTItMS0xLTI4ODA1_b6e81b1b-deac-496a-bcfb-ef35cd895d26">Yes</dei:EntityCurrentReportingStatus>
    <dei:EntityInteractiveDataCurrent
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGFibGU6NzFhMjg0ODczNGYwNDI2MGEzYTJkOTg1NzU3OTgyZTMvdGFibGVyYW5nZTo3MWEyODQ4NzM0ZjA0MjYwYTNhMmQ5ODU3NTc5ODJlM18wLTItMS0xLTI4ODA1_a51d289f-cb75-4181-8bb9-438a2c2c1dcc">Yes</dei:EntityInteractiveDataCurrent>
    <dei:EntityFilerCategory
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGFibGU6MTAwMjcyOWFiZDEzNDZlNjk1ZTVjYTBjYzFkNmNlYjcvdGFibGVyYW5nZToxMDAyNzI5YWJkMTM0NmU2OTVlNWNhMGNjMWQ2Y2ViN18wLTEtMS0xLTI4ODA1_27ff78c2-9e8f-4ade-8d7e-34c710b089d2">Large Accelerated Filer</dei:EntityFilerCategory>
    <dei:EntitySmallBusiness
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGFibGU6MTAwMjcyOWFiZDEzNDZlNjk1ZTVjYTBjYzFkNmNlYjcvdGFibGVyYW5nZToxMDAyNzI5YWJkMTM0NmU2OTVlNWNhMGNjMWQ2Y2ViN18xLTMtMS0xLTI4ODA1_8e0c41bd-ad28-4332-b173-d116de389527">false</dei:EntitySmallBusiness>
    <dei:EntityEmergingGrowthCompany
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGFibGU6MTAwMjcyOWFiZDEzNDZlNjk1ZTVjYTBjYzFkNmNlYjcvdGFibGVyYW5nZToxMDAyNzI5YWJkMTM0NmU2OTVlNWNhMGNjMWQ2Y2ViN18yLTMtMS0xLTI4ODA1_373dc028-4297-4788-8967-f8752613d0bb">false</dei:EntityEmergingGrowthCompany>
    <dei:IcfrAuditorAttestationFlag
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGFibGU6Njg3NzU3NWMxMGNkNDM2YzhkNWZjYjY4NGRlM2I3M2IvdGFibGVyYW5nZTo2ODc3NTc1YzEwY2Q0MzZjOGQ1ZmNiNjg0ZGUzYjczYl8wLTQtMS0xLTI4ODA1_c254510e-92f0-41dc-96fd-d53cd9f47140">true</dei:IcfrAuditorAttestationFlag>
    <dei:EntityShellCompany
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGFibGU6ODk0YjRjZTE5ZjQxNDAyMWI2ZjgxMzBkYTFlYWE1MjEvdGFibGVyYW5nZTo4OTRiNGNlMTlmNDE0MDIxYjZmODEzMGRhMWVhYTUyMV8wLTQtMS0xLTI4ODA1_a4eef1c6-0280-41d6-9f0e-9ec59db3e3c6">false</dei:EntityShellCompany>
    <dei:EntityPublicFloat
      contextRef="i7c2b1bb204e448309e5bf8b47a93c0d4_I20210704"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGV4dHJlZ2lvbjozNzRlODkyZmRhODc0Y2IyOTk0ZWY4YmM4ZWI0ZDhkYl8yNzEz_58cd1bc5-4454-40ca-a624-4feebaf40856"
      unitRef="usd">14919879186</dei:EntityPublicFloat>
    <dei:EntityCommonStockSharesOutstanding
      contextRef="i8d58524b17ed4bb29e951219ac0be8d4_I20220130"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGV4dHJlZ2lvbjozNzRlODkyZmRhODc0Y2IyOTk0ZWY4YmM4ZWI0ZDhkYl8yNzgw_623b05d3-f151-4608-9ada-b360087dd5c0"
      unitRef="shares">173915951</dei:EntityCommonStockSharesOutstanding>
    <dei:AuditorFirmId
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82MS9mcmFnOjljN2RhYzIyMzJkNDRiMzViN2IyYTkwMWZhYjFlZTA4L3RhYmxlOjEzNDhkZWU4MDBlNDQ5NDM5MTgyOWE2MTBkNTFlMTNlL3RhYmxlcmFuZ2U6MTM0OGRlZTgwMGU0NDk0MzkxODI5YTYxMGQ1MWUxM2VfMS0wLTEtMS00MjI1OS90ZXh0cmVnaW9uOmJmNTRjYjRlMTRkNjQ0NzJhM2Q0OGU1N2FkYzhmMjg1XzE2NDkyNjc0NDE4MTA_d93ecf4d-b154-4629-b91a-3234a6840c10">248</dei:AuditorFirmId>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfNC0xLTEtMS0yODgwNQ_d4c203a2-b0af-4cd1-9cd8-0363e5eb2298"
      unitRef="usd">1037098000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfNC0zLTEtMS0yODgwNQ_b617884f-12ae-4663-9364-01333e9636f1"
      unitRef="usd">811020000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfNC01LTEtMS0yODgwNQ_e59dc8ae-8358-436f-aba0-ae8545065578"
      unitRef="usd">725625000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:CostOfGoodsAndServicesSold
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfNS0xLTEtMS0yODgwNQ_1811b91b-9aeb-4677-8c4c-02dd27d38d72"
      unitRef="usd">277271000</us-gaap:CostOfGoodsAndServicesSold>
    <us-gaap:CostOfGoodsAndServicesSold
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfNS0zLTEtMS0yODgwNQ_63acc098-0f9a-42f4-b622-f20ab0659e26"
      unitRef="usd">206421000</us-gaap:CostOfGoodsAndServicesSold>
    <us-gaap:CostOfGoodsAndServicesSold
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfNS01LTEtMS0yODgwNQ_4f9af47e-891a-4b14-b1fa-f052d27f0a5e"
      unitRef="usd">189754000</us-gaap:CostOfGoodsAndServicesSold>
    <us-gaap:GrossProfit
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfNi0xLTEtMS0yODgwNQ_88647c3d-741a-42f6-b42e-406d9693d109"
      unitRef="usd">759827000</us-gaap:GrossProfit>
    <us-gaap:GrossProfit
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfNi0zLTEtMS0yODgwNQ_92b005c7-aed5-4571-86a9-bd858ef7ccbf"
      unitRef="usd">604599000</us-gaap:GrossProfit>
    <us-gaap:GrossProfit
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfNi01LTEtMS0yODgwNQ_d8acb45d-ea71-4674-a1e0-b3027894bdd0"
      unitRef="usd">535871000</us-gaap:GrossProfit>
    <us-gaap:ResearchAndDevelopmentExpense
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfNy0xLTEtMS0yODgwNQ_0205548e-673d-4e69-a497-f78b337c6978"
      unitRef="usd">135372000</us-gaap:ResearchAndDevelopmentExpense>
    <us-gaap:ResearchAndDevelopmentExpense
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfNy0zLTEtMS0yODgwNQ_a137ea1f-f2b7-4ee5-84ca-40d27c6dab28"
      unitRef="usd">130982000</us-gaap:ResearchAndDevelopmentExpense>
    <us-gaap:ResearchAndDevelopmentExpense
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfNy01LTEtMS0yODgwNQ_08a57e7a-3b5a-4126-a8d2-b2506b6ecf23"
      unitRef="usd">119427000</us-gaap:ResearchAndDevelopmentExpense>
    <us-gaap:SellingGeneralAndAdministrativeExpense
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfOC0xLTEtMS0yODgwNQ_1a5048c3-e299-47da-acab-e960aa926d88"
      unitRef="usd">309354000</us-gaap:SellingGeneralAndAdministrativeExpense>
    <us-gaap:SellingGeneralAndAdministrativeExpense
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfOC0zLTEtMS0yODgwNQ_bafe4560-387d-4bc6-8a3b-594245123f5a"
      unitRef="usd">267593000</us-gaap:SellingGeneralAndAdministrativeExpense>
    <us-gaap:SellingGeneralAndAdministrativeExpense
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfOC01LTEtMS0yODgwNQ_0a3e1055-db81-4140-9d4d-604fef5a706c"
      unitRef="usd">273842000</us-gaap:SellingGeneralAndAdministrativeExpense>
    <us-gaap:RestructuringCharges
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfOS0xLTEtMS0yODgwNQ_b2df1842-b9ab-4009-8da3-556fe360009a"
      unitRef="usd">0</us-gaap:RestructuringCharges>
    <us-gaap:RestructuringCharges
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfOS0zLTEtMS0yODgwNQ_12320a2f-6a40-46ab-a5c0-3ef37b13ec09"
      unitRef="usd">15924000</us-gaap:RestructuringCharges>
    <us-gaap:RestructuringCharges
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfOS01LTEtMS0yODgwNQ_c6037538-51ec-4495-b01f-a6e12aac52b7"
      unitRef="usd">0</us-gaap:RestructuringCharges>
    <us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTAtMS0xLTEtMjg4MDU_feb9ccb3-1b67-41e6-a3b8-4f66de6640e6"
      unitRef="usd">0</us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill>
    <us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTAtMy0xLTEtMjg4MDU_d0de176b-c658-4263-9a12-f57fee03b824"
      unitRef="usd">19571000</us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill>
    <us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTAtNS0xLTEtMjg4MDU_6bf72240-b01c-49f6-9ed7-adbc1feb26ac"
      unitRef="usd">0</us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill>
    <us-gaap:OperatingIncomeLoss
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTEtMS0xLTEtMjg4MDU_8b33733c-be2a-444e-832c-bba1c03cb5cf"
      unitRef="usd">315101000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTEtMy0xLTEtMjg4MDU_0ef22013-8efa-4549-8669-1a933dff80a0"
      unitRef="usd">170529000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTEtNS0xLTEtMjg4MDU_1e3fda19-4164-4975-b6a0-803b372aa759"
      unitRef="usd">142602000</us-gaap:OperatingIncomeLoss>
    <us-gaap:ForeignCurrencyTransactionGainLossBeforeTax
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTItMS0xLTEtMjg4MDU_e9e6cf58-f928-4bf1-b5e1-c381f2ffaf9c"
      unitRef="usd">-2270000</us-gaap:ForeignCurrencyTransactionGainLossBeforeTax>
    <us-gaap:ForeignCurrencyTransactionGainLossBeforeTax
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTItMy0xLTEtMjg4MDU_0e9bae22-84aa-4292-9e17-04b1fc40b0c8"
      unitRef="usd">3697000</us-gaap:ForeignCurrencyTransactionGainLossBeforeTax>
    <us-gaap:ForeignCurrencyTransactionGainLossBeforeTax
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTItNS0xLTEtMjg4MDU_d02ec1e5-4678-4cd9-a98d-06380864f30e"
      unitRef="usd">-509000</us-gaap:ForeignCurrencyTransactionGainLossBeforeTax>
    <us-gaap:InvestmentIncomeNonoperating
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTMtMS0xLTEtMjg4MDU_3260126e-81e8-45b8-bbaa-640df8030df2"
      unitRef="usd">6660000</us-gaap:InvestmentIncomeNonoperating>
    <us-gaap:InvestmentIncomeNonoperating
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTMtMy0xLTEtMjg4MDU_56154023-461f-46ea-8b5b-18097189512e"
      unitRef="usd">12994000</us-gaap:InvestmentIncomeNonoperating>
    <us-gaap:InvestmentIncomeNonoperating
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTMtNS0xLTEtMjg4MDU_9375e98a-bf86-4b32-bbdc-f029c623e480"
      unitRef="usd">19689000</us-gaap:InvestmentIncomeNonoperating>
    <us-gaap:OtherNonoperatingIncomeExpense
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTQtMS0xLTEtMjg4MDU_46648351-033b-4ef8-a1bd-ddbd2888b423"
      unitRef="usd">-591000</us-gaap:OtherNonoperatingIncomeExpense>
    <us-gaap:OtherNonoperatingIncomeExpense
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTQtMy0xLTEtMjg4MDU_1474614c-1f15-4f91-9a09-4854327d54fd"
      unitRef="usd">-309000</us-gaap:OtherNonoperatingIncomeExpense>
    <us-gaap:OtherNonoperatingIncomeExpense
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTQtNS0xLTEtMjg4MDU_871ffd14-54e6-4066-b66e-6e71d338ed72"
      unitRef="usd">1212000</us-gaap:OtherNonoperatingIncomeExpense>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTUtMS0xLTEtMjg4MDU_83f08eab-a2df-4790-b3f9-ef4b5bee0feb"
      unitRef="usd">318900000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTUtMy0xLTEtMjg4MDU_e9e09ef3-5ec4-45a3-a08c-c439c2196443"
      unitRef="usd">186911000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTUtNS0xLTEtMjg4MDU_b2faab36-6aa5-41d6-b340-f6d59d75a775"
      unitRef="usd">162994000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTYtMS0xLTEtMjg4MDU_e9597605-2f18-4c1f-908f-ffdb1cea9438"
      unitRef="usd">39019000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTYtMy0xLTEtMjg4MDU_abff7cf0-84a7-4020-9385-a8244e4ba1d8"
      unitRef="usd">10725000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTYtNS0xLTEtMjg4MDU_808db385-cb1c-49db-93ea-abc0242877bf"
      unitRef="usd">-40871000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:NetIncomeLoss
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTktMS0xLTEtMjg4MDU_63fb6e1e-3501-4102-9d4e-457e445af2e0"
      unitRef="usd">279881000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTktMy0xLTEtMjg4MDU_106eed98-0471-48fc-9e3f-af5d2d4cd9e8"
      unitRef="usd">176186000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTktNS0xLTEtMjg4MDU_f8615543-e5c3-4af9-bc3e-9e380fd17e14"
      unitRef="usd">203865000</us-gaap:NetIncomeLoss>
    <us-gaap:EarningsPerShareBasic
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMjQtMS0xLTEtMjg4MDU_ed7843d2-73d4-4ac8-a5e3-5642bcb7f1a1"
      unitRef="usdPerShare">1.59</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMjQtMy0xLTEtMjg4MDU_494b3d87-e4ff-4ac6-997f-553615d5d8b8"
      unitRef="usdPerShare">1.02</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMjQtNS0xLTEtMjg4MDU_8e75b04e-c0e7-4fda-841a-5945701f2e7a"
      unitRef="usdPerShare">1.19</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareDiluted
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMjctMS0xLTEtMjg4MDU_8f693eac-0ed0-43d7-a424-aee887479ce4"
      unitRef="usdPerShare">1.56</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMjctMy0xLTEtMjg4MDU_3e3b36ba-8336-4546-bfa3-552cc8a5abed"
      unitRef="usdPerShare">1.00</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMjctNS0xLTEtMjg4MDU_2918caa7-40b3-4821-8baa-d6f3ebf1496a"
      unitRef="usdPerShare">1.16</us-gaap:EarningsPerShareDiluted>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMzAtMS0xLTEtMjg4MDU_8074297a-b9f3-4430-9918-12dda55f7dea"
      unitRef="shares">176463000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMzAtMy0xLTEtMjg4MDU_5b853a55-8b54-4ab8-85ab-94570a417766"
      unitRef="shares">173489000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMzAtNS0xLTEtMjg4MDU_c77ca68d-a6ce-446d-b0de-45d3571a6421"
      unitRef="shares">171194000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMzEtMS0xLTEtMjg4MDU_2d54fb58-2f28-463c-af13-ac0b332e11de"
      unitRef="shares">179916000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMzEtMy0xLTEtMjg4MDU_1224e0d5-9118-4472-aaba-dd4adb807a77"
      unitRef="shares">176592000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMzEtNS0xLTEtMjg4MDU_38adb3d7-cdd9-40f5-a038-5310c5454671"
      unitRef="shares">175269000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:CommonStockDividendsPerShareCashPaid
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="4"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMzMtMS0xLTEtMjg4MDU_12f79dfb-9a84-4a28-9cad-69258f40ed1d"
      unitRef="usdPerShare">0.245</us-gaap:CommonStockDividendsPerShareCashPaid>
    <us-gaap:CommonStockDividendsPerShareCashPaid
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="4"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMzMtMy0xLTEtMjg4MDU_ab258229-a966-4dc7-ba66-df0f23eaca58"
      unitRef="usdPerShare">2.225</us-gaap:CommonStockDividendsPerShareCashPaid>
    <us-gaap:CommonStockDividendsPerShareCashPaid
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="4"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMzMtNS0xLTEtMjg4MDU_2ff20d62-7c70-4e69-9921-9fc67e2b17c9"
      unitRef="usdPerShare">0.205</us-gaap:CommonStockDividendsPerShareCashPaid>
    <us-gaap:NetIncomeLoss
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMy0xLTEtMS0yODgwNQ_63fb6e1e-3501-4102-9d4e-457e445af2e0"
      unitRef="usd">279881000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMy0zLTEtMS0yODgwNQ_106eed98-0471-48fc-9e3f-af5d2d4cd9e8"
      unitRef="usd">176186000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMy01LTEtMS0yODgwNQ_f8615543-e5c3-4af9-bc3e-9e380fd17e14"
      unitRef="usd">203865000</us-gaap:NetIncomeLoss>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTEtMC0xLTEtMjg4MDUvdGV4dHJlZ2lvbjpiOTZhYjU2NDE1YjM0YzZhYmRlYWIzMTg0NzE2M2RmZF8xNjQ5MjY3NDQxNzg2_52204a59-a46b-41fd-9cf8-108c737acf1e"
      unitRef="usd">-2206000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTEtMC0xLTEtMjg4MDUvdGV4dHJlZ2lvbjpiOTZhYjU2NDE1YjM0YzZhYmRlYWIzMTg0NzE2M2RmZF8xNjQ5MjY3NDQxNzkz_281a6c01-4842-48c8-b3b2-009012245a92"
      unitRef="usd">981000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTEtMC0xLTEtMjg4MDUvdGV4dHJlZ2lvbjpiOTZhYjU2NDE1YjM0YzZhYmRlYWIzMTg0NzE2M2RmZF8xNjQ5MjY3NDQxODAw_03075959-5971-40f2-9189-5c3fa81d8ebb"
      unitRef="usd">515000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="ia081105dd8bd4aaaa1265cbf9c24acc2_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTEtMS0xLTEtMjg4MDU_1dd1fd40-edab-4d0d-8e68-0b91a5164637"
      unitRef="usd">-7152000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTEtMS0xLTEtMjg4MDU_b742f886-5ad2-49bb-acfc-377ae728e3a1"
      unitRef="usd">-7152000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTEtMy0xLTEtMjg4MDU_5214bebf-0197-469d-af95-cfe9be899b74"
      unitRef="usd">6478000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTEtNS0xLTEtMjg4MDU_6f0351b4-150f-457f-9ea2-5d4b9bc0f5b6"
      unitRef="usd">5219000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTMtMS0xLTEtMjg4MDU_8beac94e-d0d6-4dca-a1e2-cbfa7ffda116"
      unitRef="usd">236000</us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
      contextRef="ia081105dd8bd4aaaa1265cbf9c24acc2_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTMtMS0xLTEtMjg4MDU_a73b989f-4a6f-4c86-86eb-cd252dddedf3"
      unitRef="usd">236000</us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTMtMy0xLTEtMjg4MDU_22f067fd-4e97-4ffd-af18-731efacb683c"
      unitRef="usd">4119000</us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTMtNS0xLTEtMjg4MDU_cc084d4b-86fe-4d26-b4d7-1a14ea1d117b"
      unitRef="usd">1452000</us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax>
    <us-gaap:OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTQtMS0xLTEtMjg4MDU_534fb1dc-195d-4c19-b867-695a34ed9811"
      unitRef="usd">-7388000</us-gaap:OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTQtMy0xLTEtMjg4MDU_3775f206-6f78-44d5-83cc-28dd3ce3baca"
      unitRef="usd">2359000</us-gaap:OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTQtNS0xLTEtMjg4MDU_dcb43327-b4e4-4afc-9044-1df8ad07e075"
      unitRef="usd">3767000</us-gaap:OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTctMS0xLTEtMjg4MDU_343cbe48-d062-46c5-bac8-ae2ccdd12aeb"
      unitRef="usd">-6753000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="ia081105dd8bd4aaaa1265cbf9c24acc2_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTctMS0xLTEtMjg4MDU_355fb131-335d-4929-a67b-e9aae1838af7"
      unitRef="usd">-6753000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTctMy0xLTEtMjg4MDU_bb513484-153e-4305-9078-38690be011b6"
      unitRef="usd">1115000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTctNS0xLTEtMjg4MDU_202c56e2-d3d4-4e2b-aa3d-29a6dac9ecaa"
      unitRef="usd">-541000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTgtMS0xLTEtMjg4MDU_32713708-4ac9-49d3-939f-794784f22cb7"
      unitRef="usd">-6753000</us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTgtMy0xLTEtMjg4MDU_ce5afdb6-b6d1-45ea-8cea-8192fb59224d"
      unitRef="usd">1115000</us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTgtNS0xLTEtMjg4MDU_c1fa9709-6d19-4d36-87c4-a124cfa28df1"
      unitRef="usd">-541000</us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMjAtMS0xLTEtMjg4MDU_99d33bc5-eb7f-428a-824f-6984bf9a790c"
      unitRef="usd">-14141000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMjAtMy0xLTEtMjg4MDU_4068dec2-b992-4af2-9dc9-8403bedb0a50"
      unitRef="usd">3474000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMjAtNS0xLTEtMjg4MDU_996918f4-c778-4941-bf45-375551e35c56"
      unitRef="usd">3226000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMjEtMS0xLTEtMjg4MDU_64e6ce0a-3a1c-4471-a0d4-f3ef59c32ebb"
      unitRef="usd">265740000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMjEtMy0xLTEtMjg4MDU_74fd4a6b-a4a4-4c46-aeb2-1ae966a8e8bd"
      unitRef="usd">179660000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMjEtNS0xLTEtMjg4MDU_c28633ac-4bb9-4d63-924e-5c737a1c5f33"
      unitRef="usd">207091000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNS0xLTEtMS0yODgwNQ_e1096d69-6147-4d3e-b96e-1bd9674916b4"
      unitRef="usd">186161000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNS0zLTEtMS0yODgwNQ_ade9878f-0caf-44e3-8024-9657a143eab0"
      unitRef="usd">269073000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostCurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNi0wLTEtMS0yODgwNS90ZXh0cmVnaW9uOmQ3MjZjNDI0YWRlODQ1ZTZhYzg4YTQ4MjdmNzliOWQ0XzEwOTk1MTE2Mjc5MzE_4fed5f3f-060e-4c3d-942d-87fb3f35b180"
      unitRef="usd">137124000</us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostCurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNi0wLTEtMS0yODgwNS90ZXh0cmVnaW9uOmQ3MjZjNDI0YWRlODQ1ZTZhYzg4YTQ4MjdmNzliOWQ0XzEwOTk1MTE2Mjc5NDI_89e781cc-e420-4fc7-a6d4-759ea08f963c"
      unitRef="usd">102258000</us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossCurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNi0wLTEtMS0yODgwNS90ZXh0cmVnaW9uOmQ3MjZjNDI0YWRlODQ1ZTZhYzg4YTQ4MjdmNzliOWQ0XzEwOTk1MTE2Mjc5NTE_54c9d95e-5fee-48f0-a663-9785d86bd2a1"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossCurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNi0wLTEtMS0yODgwNS90ZXh0cmVnaW9uOmQ3MjZjNDI0YWRlODQ1ZTZhYzg4YTQ4MjdmNzliOWQ0XzEwOTk1MTE2Mjc5NTE_d649e1c1-e3dc-4e47-8349-d990f93d7ce3"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossCurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNi0xLTEtMS0yODgwNQ_3850fce7-5387-42e6-a071-2ef2578c3845"
      unitRef="usd">137455000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNi0zLTEtMS0yODgwNQ_a8d92f80-0e75-4e28-957f-df5f430c83a4"
      unitRef="usd">103240000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNy0wLTEtMS0yODgwNS90ZXh0cmVnaW9uOjFkN2EyNjIyNGIxNTQ1NTg4NDIyMzM3NzBmMGNhNTNjXzEwOTk1MTE2Mjc4OTM_83a8cb10-16a4-40b6-8fe9-849f80787413"
      unitRef="usd">776000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNy0wLTEtMS0yODgwNS90ZXh0cmVnaW9uOjFkN2EyNjIyNGIxNTQ1NTg4NDIyMzM3NzBmMGNhNTNjXzEwOTk1MTE2Mjc4ODc_631b2888-620d-4792-b00f-1b18efca405e"
      unitRef="usd">831000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:AccountsReceivableNetCurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNy0xLTEtMS0yODgwNQ_9fe205aa-fa0d-48c7-9025-e0f13bb32411"
      unitRef="usd">130348000</us-gaap:AccountsReceivableNetCurrent>
    <us-gaap:AccountsReceivableNetCurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNy0zLTEtMS0yODgwNQ_796591e3-6f22-4f33-a52d-4bdaf3f4e462"
      unitRef="usd">125696000</us-gaap:AccountsReceivableNetCurrent>
    <us-gaap:UnbilledReceivablesCurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfOC0xLTEtMS0yODgwNQ_5ed215b5-b7c5-4e34-83fd-c3b873c32aad"
      unitRef="usd">3990000</us-gaap:UnbilledReceivablesCurrent>
    <us-gaap:UnbilledReceivablesCurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfOC0zLTEtMS0yODgwNQ_d33258b6-8ea1-415c-9f63-16539aa1fb65"
      unitRef="usd">5632000</us-gaap:UnbilledReceivablesCurrent>
    <us-gaap:InventoryNet
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfOS0xLTEtMS0yODgwNQ_5bdad76a-64ec-46c1-b21b-8d12171416e3"
      unitRef="usd">113102000</us-gaap:InventoryNet>
    <us-gaap:InventoryNet
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfOS0zLTEtMS0yODgwNQ_9562517e-596c-4f2d-8daa-87b394b8b1ec"
      unitRef="usd">60830000</us-gaap:InventoryNet>
    <us-gaap:PrepaidExpenseAndOtherAssetsCurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTAtMS0xLTEtMjg4MDU_cfe161ae-af35-4bc4-8e84-8c586656c5b6"
      unitRef="usd">68742000</us-gaap:PrepaidExpenseAndOtherAssetsCurrent>
    <us-gaap:PrepaidExpenseAndOtherAssetsCurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTAtMy0xLTEtMjg4MDU_668696fd-2fbf-40c8-9b57-8238b525432c"
      unitRef="usd">37220000</us-gaap:PrepaidExpenseAndOtherAssetsCurrent>
    <us-gaap:AssetsCurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTEtMS0xLTEtMjg4MDU_67b3f233-8f74-488f-b6b2-d0e566e93c77"
      unitRef="usd">639798000</us-gaap:AssetsCurrent>
    <us-gaap:AssetsCurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTEtMy0xLTEtMjg4MDU_37653c80-31ee-4db7-b403-4b50d3dec2a7"
      unitRef="usd">601691000</us-gaap:AssetsCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostNoncurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTItMC0xLTEtMjg4MDUvdGV4dHJlZ2lvbjo0OWM0M2Q0NDU3NDg0NzMxYmNkY2I3NTEzYWY3YWNlZl8xMDk5NTExNjI3OTM1_4dc47643-8ab9-4a72-8f4c-94d2b8d70733"
      unitRef="usd">587981000</us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostNoncurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostNoncurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTItMC0xLTEtMjg4MDUvdGV4dHJlZ2lvbjo0OWM0M2Q0NDU3NDg0NzMxYmNkY2I3NTEzYWY3YWNlZl8xMDk5NTExNjI3OTQ2_dbdb6e3a-9cb3-43e9-a616-4ebdc34da03e"
      unitRef="usd">390417000</us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostNoncurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossNoncurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTItMC0xLTEtMjg4MDUvdGV4dHJlZ2lvbjo0OWM0M2Q0NDU3NDg0NzMxYmNkY2I3NTEzYWY3YWNlZl8xMDk5NTExNjI3OTUx_a9ead8f8-6394-46ed-a1d6-02037a432097"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossNoncurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossNoncurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTItMC0xLTEtMjg4MDUvdGV4dHJlZ2lvbjo0OWM0M2Q0NDU3NDg0NzMxYmNkY2I3NTEzYWY3YWNlZl8xMDk5NTExNjI3OTUx_f370e15e-1ec4-4d36-a05d-4e0aeed10307"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossNoncurrent>
    <us-gaap:LongTermInvestments
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTItMS0xLTEtMjg4MDU_a99ced8f-2792-4e77-9233-0c6fcb703eb0"
      unitRef="usd">583748000</us-gaap:LongTermInvestments>
    <us-gaap:LongTermInvestments
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTItMy0xLTEtMjg4MDU_196cdde4-f3e6-48b7-985b-5b9952d123c4"
      unitRef="usd">395125000</us-gaap:LongTermInvestments>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTMtMS0xLTEtMjg4MDU_f744812a-9ef5-4a8b-bc1e-187e146006e7"
      unitRef="usd">77546000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTMtMy0xLTEtMjg4MDU_7d8b23d5-6d2f-4ba5-8674-bda8e740fbfb"
      unitRef="usd">79173000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:OperatingLeaseRightOfUseAsset
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTQtMS0xLTEtMjg4MDU_e6313baa-10b0-42eb-9adc-ef427838f034"
      unitRef="usd">23157000</us-gaap:OperatingLeaseRightOfUseAsset>
    <us-gaap:OperatingLeaseRightOfUseAsset
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTQtMy0xLTEtMjg4MDU_4e56fba2-53c4-4ab3-a06d-af3ad0e8096b"
      unitRef="usd">22582000</us-gaap:OperatingLeaseRightOfUseAsset>
    <us-gaap:Goodwill
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTUtMS0xLTEtMjg4MDU_3043f833-ee4e-42fb-8515-e1f73f7e262e"
      unitRef="usd">241713000</us-gaap:Goodwill>
    <us-gaap:Goodwill
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTUtMy0xLTEtMjg4MDU_547adc00-94bb-4638-8e78-fb24c837baab"
      unitRef="usd">244078000</us-gaap:Goodwill>
    <us-gaap:IntangibleAssetsNetExcludingGoodwill
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTYtMS0xLTEtMjg4MDU_cedd3677-df80-45cf-b000-6fc5ea12a37a"
      unitRef="usd">11888000</us-gaap:IntangibleAssetsNetExcludingGoodwill>
    <us-gaap:IntangibleAssetsNetExcludingGoodwill
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTYtMy0xLTEtMjg4MDU_22238314-af54-41b4-acbf-11124afe5941"
      unitRef="usd">15555000</us-gaap:IntangibleAssetsNetExcludingGoodwill>
    <us-gaap:DeferredIncomeTaxAssetsNet
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTctMS0xLTEtMjg4MDU_0331d5f8-5e6d-413b-8edc-68053c4018de"
      unitRef="usd">418570000</us-gaap:DeferredIncomeTaxAssetsNet>
    <us-gaap:DeferredIncomeTaxAssetsNet
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTctMy0xLTEtMjg4MDU_7ba73d4d-8f51-48c1-8154-bb1be96a69e1"
      unitRef="usd">434704000</us-gaap:DeferredIncomeTaxAssetsNet>
    <us-gaap:OtherAssetsNoncurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTgtMS0xLTEtMjg4MDU_82607e59-9e18-48cf-b484-9c945717b2ee"
      unitRef="usd">7242000</us-gaap:OtherAssetsNoncurrent>
    <us-gaap:OtherAssetsNoncurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTgtMy0xLTEtMjg4MDU_9516a476-b00d-4a7b-906b-9ab7efbb10e7"
      unitRef="usd">7794000</us-gaap:OtherAssetsNoncurrent>
    <us-gaap:Assets
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTktMS0xLTEtMjg4MDU_5f65abe9-354c-46b8-9b63-a80933d75b4e"
      unitRef="usd">2003662000</us-gaap:Assets>
    <us-gaap:Assets
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTktMy0xLTEtMjg4MDU_8722a55f-891f-45fb-83d8-9d97f271a8a4"
      unitRef="usd">1800702000</us-gaap:Assets>
    <us-gaap:AccountsPayableCurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMjMtMS0xLTEtMjg4MDU_aedaf0d8-0bf5-4b2d-be80-864e72f4a791"
      unitRef="usd">44051000</us-gaap:AccountsPayableCurrent>
    <us-gaap:AccountsPayableCurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMjMtMy0xLTEtMjg4MDU_7c13ae19-8bff-4b2f-9b22-fbbc3c3e3b16"
      unitRef="usd">16270000</us-gaap:AccountsPayableCurrent>
    <us-gaap:AccruedLiabilitiesCurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMjQtMS0xLTEtMjg4MDU_6a1a4599-fb9d-4ab8-b9d7-992eb0777841"
      unitRef="usd">92432000</us-gaap:AccruedLiabilitiesCurrent>
    <us-gaap:AccruedLiabilitiesCurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMjQtMy0xLTEtMjg4MDU_e208c658-43c7-4ca4-bfb4-815eb0d99638"
      unitRef="usd">77264000</us-gaap:AccruedLiabilitiesCurrent>
    <us-gaap:AccruedIncomeTaxesCurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMjUtMS0xLTEtMjg4MDU_e5c3d661-300e-4549-b155-95c70bb66897"
      unitRef="usd">8577000</us-gaap:AccruedIncomeTaxesCurrent>
    <us-gaap:AccruedIncomeTaxesCurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMjUtMy0xLTEtMjg4MDU_705eb961-50cb-4a94-a5b5-4b72cb791dad"
      unitRef="usd">9379000</us-gaap:AccruedIncomeTaxesCurrent>
    <us-gaap:ContractWithCustomerLiabilityCurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMjYtMS0xLTEtMjg4MDU_cc405467-25f6-4df1-bc18-6fa62bb91028"
      unitRef="usd">35743000</us-gaap:ContractWithCustomerLiabilityCurrent>
    <us-gaap:ContractWithCustomerLiabilityCurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMjYtMy0xLTEtMjg4MDU_b14d33d9-0f59-4e78-ba38-03c05750f12f"
      unitRef="usd">21274000</us-gaap:ContractWithCustomerLiabilityCurrent>
    <us-gaap:OperatingLeaseLiabilityCurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMjctMS0xLTEtMjg4MDU_c7ba9ff7-955a-429a-b502-d017a1c18bde"
      unitRef="usd">7786000</us-gaap:OperatingLeaseLiabilityCurrent>
    <us-gaap:OperatingLeaseLiabilityCurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMjctMy0xLTEtMjg4MDU_33e8878e-6541-47e9-9709-19884bc5667b"
      unitRef="usd">8110000</us-gaap:OperatingLeaseLiabilityCurrent>
    <us-gaap:LiabilitiesCurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMjgtMS0xLTEtMjg4MDU_47176647-829d-4353-a19d-b8aca22e5d32"
      unitRef="usd">188589000</us-gaap:LiabilitiesCurrent>
    <us-gaap:LiabilitiesCurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMjgtMy0xLTEtMjg4MDU_0d85641e-de17-4ddf-b318-6a6ccbfe2311"
      unitRef="usd">132297000</us-gaap:LiabilitiesCurrent>
    <us-gaap:OperatingLeaseLiabilityNoncurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMjktMS0xLTEtMjg4MDU_021575c9-a9d3-49f4-b5ae-4520acd6ed6c"
      unitRef="usd">17795000</us-gaap:OperatingLeaseLiabilityNoncurrent>
    <us-gaap:OperatingLeaseLiabilityNoncurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMjktMy0xLTEtMjg4MDU_ecf93584-487b-4b48-8177-c32b1baa6419"
      unitRef="usd">18120000</us-gaap:OperatingLeaseLiabilityNoncurrent>
    <us-gaap:DeferredIncomeTaxLiabilitiesNet
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMzAtMS0xLTEtMjg4MDU_49db500d-ad29-49d1-9144-4682922824b2"
      unitRef="usd">293769000</us-gaap:DeferredIncomeTaxLiabilitiesNet>
    <us-gaap:DeferredIncomeTaxLiabilitiesNet
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMzAtMy0xLTEtMjg4MDU_80e7b7d4-7266-45e7-91cf-2e0b13f3dc3c"
      unitRef="usd">314952000</us-gaap:DeferredIncomeTaxLiabilitiesNet>
    <us-gaap:LiabilityForUncertainTaxPositionsNoncurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMzEtMS0xLTEtMjg4MDU_6b19f80c-b119-464c-bc9a-b7f7ddd3b720"
      unitRef="usd">14780000</us-gaap:LiabilityForUncertainTaxPositionsNoncurrent>
    <us-gaap:LiabilityForUncertainTaxPositionsNoncurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMzEtMy0xLTEtMjg4MDU_447e9c9c-73b2-4811-899b-5aceb0572beb"
      unitRef="usd">14257000</us-gaap:LiabilityForUncertainTaxPositionsNoncurrent>
    <us-gaap:AccruedIncomeTaxesNoncurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMzItMS0xLTEtMjg4MDU_783a9c03-a214-49fc-9414-b64e10254e60"
      unitRef="usd">43160000</us-gaap:AccruedIncomeTaxesNoncurrent>
    <us-gaap:AccruedIncomeTaxesNoncurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMzItMy0xLTEtMjg4MDU_66748c11-08f0-4063-871a-70986a35bb98"
      unitRef="usd">48915000</us-gaap:AccruedIncomeTaxesNoncurrent>
    <us-gaap:OtherLiabilitiesNoncurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMzMtMS0xLTEtMjg4MDU_cb1c6531-c0e7-4c78-a659-946625d8e375"
      unitRef="usd">15476000</us-gaap:OtherLiabilitiesNoncurrent>
    <us-gaap:OtherLiabilitiesNoncurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMzMtMy0xLTEtMjg4MDU_28687061-ae12-4de4-933f-ea05c9f04dc2"
      unitRef="usd">9959000</us-gaap:OtherLiabilitiesNoncurrent>
    <us-gaap:Liabilities
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMzQtMS0xLTEtMjg4MDU_8a583769-0c08-4ddd-892d-6c5482593988"
      unitRef="usd">573569000</us-gaap:Liabilities>
    <us-gaap:Liabilities
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMzQtMy0xLTEtMjg4MDU_0c9e5f46-e492-45d1-b319-1d5dfed0c043"
      unitRef="usd">538500000</us-gaap:Liabilities>
    <us-gaap:CommitmentsAndContingencies
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMzYtMS0xLTEtMjg4MDU_57896a22-5293-41f6-b3c0-23b9f778a49d"
      unitRef="usd"
      xsi:nil="true"/>
    <us-gaap:CommitmentsAndContingencies
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMzYtMy0xLTEtMjg4MDU_12b8c8da-9cf5-4995-8e20-a4b373c72de7"
      unitRef="usd"
      xsi:nil="true"/>
    <us-gaap:PreferredStockValueOutstanding
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMzgtMS0xLTEtMjg4MDU_958f6b99-2faa-404d-a489-4f836e03065f"
      unitRef="usd">0</us-gaap:PreferredStockValueOutstanding>
    <us-gaap:PreferredStockValueOutstanding
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMzgtMy0xLTEtMjg4MDU_bfaa2f74-f65a-419c-9860-0c765d8643df"
      unitRef="usd">0</us-gaap:PreferredStockValueOutstanding>
    <us-gaap:CommonStockValueOutstanding
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMzktMS0xLTEtMjg4MDU_5234732b-dcc0-4df5-a6c9-9de2b2ad4fa9"
      unitRef="usd">351000</us-gaap:CommonStockValueOutstanding>
    <us-gaap:CommonStockValueOutstanding
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMzktMy0xLTEtMjg4MDU_65b87bd1-01c8-4aa9-899c-b4ada6b642bc"
      unitRef="usd">352000</us-gaap:CommonStockValueOutstanding>
    <us-gaap:AdditionalPaidInCapitalCommonStock
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNDAtMS0xLTEtMjg4MDU_a2797beb-1eb6-4ca7-8260-6c5a4da4f249"
      unitRef="usd">914802000</us-gaap:AdditionalPaidInCapitalCommonStock>
    <us-gaap:AdditionalPaidInCapitalCommonStock
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNDAtMy0xLTEtMjg4MDU_8ed39b17-8a7a-4028-abcc-a05aae5928f0"
      unitRef="usd">807739000</us-gaap:AdditionalPaidInCapitalCommonStock>
    <us-gaap:RetainedEarningsAccumulatedDeficit
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNDEtMS0xLTEtMjg4MDU_bde04d27-a450-42a6-8a85-212eb3538e67"
      unitRef="usd">562882000</us-gaap:RetainedEarningsAccumulatedDeficit>
    <us-gaap:RetainedEarningsAccumulatedDeficit
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNDEtMy0xLTEtMjg4MDU_19bb859a-ead8-4f7a-88de-18a1d5d1e3b8"
      unitRef="usd">487912000</us-gaap:RetainedEarningsAccumulatedDeficit>
    <us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNDItMS0xLTEtMjg4MDU_032a26c3-94c8-4cea-b5b4-f34795c11ce6"
      unitRef="usd">-47942000</us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax>
    <us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNDItMy0xLTEtMjg4MDU_7d39a523-6942-441d-967e-ad8d4db456fc"
      unitRef="usd">-33801000</us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax>
    <us-gaap:StockholdersEquity
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNDMtMS0xLTEtMjg4MDU_1988e870-9dfc-4330-8f7d-37fd16e0e9e4"
      unitRef="usd">1430093000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNDMtMy0xLTEtMjg4MDU_608a61bc-a879-49cf-9093-260abcac0eda"
      unitRef="usd">1262202000</us-gaap:StockholdersEquity>
    <us-gaap:LiabilitiesAndStockholdersEquity
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNDQtMS0xLTEtMjg4MDU_a0df0291-c7cb-476c-a90c-e04833ce53b9"
      unitRef="usd">2003662000</us-gaap:LiabilitiesAndStockholdersEquity>
    <us-gaap:LiabilitiesAndStockholdersEquity
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNDQtMy0xLTEtMjg4MDU_fbd3aa04-d7a1-4f1b-8b2e-c4ce8a86f808"
      unitRef="usd">1800702000</us-gaap:LiabilitiesAndStockholdersEquity>
    <us-gaap:NetIncomeLoss
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNC0xLTEtMS0yODgwNQ_63fb6e1e-3501-4102-9d4e-457e445af2e0"
      unitRef="usd">279881000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNC0zLTEtMS0yODgwNQ_106eed98-0471-48fc-9e3f-af5d2d4cd9e8"
      unitRef="usd">176186000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNC01LTEtMS0yODgwNQ_f8615543-e5c3-4af9-bc3e-9e380fd17e14"
      unitRef="usd">203865000</us-gaap:NetIncomeLoss>
    <us-gaap:StockOptionPlanExpense
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNy0xLTEtMS0yODgwNQ_b849c884-659f-459e-8de9-cedec42e1496"
      unitRef="usd">43774000</us-gaap:StockOptionPlanExpense>
    <us-gaap:StockOptionPlanExpense
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNy0zLTEtMS0yODgwNQ_68139d48-87ed-4405-a3eb-dafdfcd1e75f"
      unitRef="usd">42661000</us-gaap:StockOptionPlanExpense>
    <us-gaap:StockOptionPlanExpense
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNy01LTEtMS0yODgwNQ_83d3ecdb-7e67-4c86-8938-d78cf070cac5"
      unitRef="usd">45589000</us-gaap:StockOptionPlanExpense>
    <us-gaap:Depreciation
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfOC0xLTEtMS0yODgwNQ_7ad0dde0-8062-40d4-b256-156ba44c1d27"
      unitRef="usd">16616000</us-gaap:Depreciation>
    <us-gaap:Depreciation
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfOC0zLTEtMS0yODgwNQ_eb3d8953-62ca-4285-a495-255e68562146"
      unitRef="usd">22139000</us-gaap:Depreciation>
    <us-gaap:Depreciation
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfOC01LTEtMS0yODgwNQ_d4fe5c28-9033-4d8f-a909-a8b49bc7b54a"
      unitRef="usd">21527000</us-gaap:Depreciation>
    <us-gaap:GainLossOnSaleOfPropertyPlantEquipment
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfOS0xLTEtMS0yODgwNQ_21ca1ac6-7c91-4b99-96ca-cd1f8216df00"
      unitRef="usd">-33000</us-gaap:GainLossOnSaleOfPropertyPlantEquipment>
    <us-gaap:GainLossOnSaleOfPropertyPlantEquipment
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfOS0zLTEtMS0yODgwNQ_c964abbe-0d74-4d31-b0c0-ebc9599f5f5a"
      unitRef="usd">-1817000</us-gaap:GainLossOnSaleOfPropertyPlantEquipment>
    <us-gaap:GainLossOnSaleOfPropertyPlantEquipment
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfOS01LTEtMS0yODgwNQ_185134a4-fd5b-4392-9f88-822148b24cf0"
      unitRef="usd">-324000</us-gaap:GainLossOnSaleOfPropertyPlantEquipment>
    <us-gaap:AmortizationOfIntangibleAssets
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTAtMS0xLTEtMjg4MDU_92f9ef5b-e5e5-4b82-b012-f300953b45f2"
      unitRef="usd">3667000</us-gaap:AmortizationOfIntangibleAssets>
    <us-gaap:AmortizationOfIntangibleAssets
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTAtMy0xLTEtMjg4MDU_fb9f5653-7b4a-4325-b0e4-eefbf12ff5dd"
      unitRef="usd">4364000</us-gaap:AmortizationOfIntangibleAssets>
    <us-gaap:AmortizationOfIntangibleAssets
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTAtNS0xLTEtMjg4MDU_b026e7ae-d594-4359-8e0c-b2652dc9cda2"
      unitRef="usd">3373000</us-gaap:AmortizationOfIntangibleAssets>
    <us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTEtMS0xLTEtMjg4MDU_291b962f-4c21-4cb7-a3fb-bd2841e60a08"
      unitRef="usd">0</us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill>
    <us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTEtMy0xLTEtMjg4MDU_2bf44323-5254-4bc6-8d91-548cf63b5e33"
      unitRef="usd">19571000</us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill>
    <us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTEtNS0xLTEtMjg4MDU_bce0a8a0-0499-42e3-99b8-8c73ea9213b4"
      unitRef="usd">0</us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill>
    <cgnx:ExcessAndObsoleteInventoryCharges
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTItMS0xLTEtMjg4MDU_4e52afca-b941-412b-b776-48fb91d649c0"
      unitRef="usd">2573000</cgnx:ExcessAndObsoleteInventoryCharges>
    <cgnx:ExcessAndObsoleteInventoryCharges
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTItMy0xLTEtMjg4MDU_8bae0034-a1b3-4957-97a4-13fbf439c0ad"
      unitRef="usd">9908000</cgnx:ExcessAndObsoleteInventoryCharges>
    <cgnx:ExcessAndObsoleteInventoryCharges
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTItNS0xLTEtMjg4MDU_bb69ba6f-f956-46e8-8d2c-6b878d2fae6a"
      unitRef="usd">5296000</cgnx:ExcessAndObsoleteInventoryCharges>
    <us-gaap:OperatingLeaseImpairmentLoss
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTMtMS0xLTEtMjg4MDU_8e04c750-490d-4e60-83db-4375135f35d0"
      unitRef="usd">0</us-gaap:OperatingLeaseImpairmentLoss>
    <us-gaap:OperatingLeaseImpairmentLoss
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTMtMy0xLTEtMjg4MDU_aab035fe-ff3a-4e4f-804f-7d0701ac24bc"
      unitRef="usd">3427000</us-gaap:OperatingLeaseImpairmentLoss>
    <us-gaap:OperatingLeaseImpairmentLoss
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTMtNS0xLTEtMjg4MDU_b48f9060-2422-4ff8-b44a-4fec5d99b481"
      unitRef="usd">0</us-gaap:OperatingLeaseImpairmentLoss>
    <us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTQtMS0xLTEtMjg4MDU_704f5b39-2f56-446b-aa87-4ac69c251488"
      unitRef="usd">-4887000</us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments>
    <us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTQtMy0xLTEtMjg4MDU_6f4e9e96-9f49-4e60-bc12-b7a316927317"
      unitRef="usd">-1274000</us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments>
    <us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTQtNS0xLTEtMjg4MDU_1b40bd8f-70bb-4ab0-ac28-01e63f1456c0"
      unitRef="usd">618000</us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments>
    <us-gaap:GainLossOnSaleOfInvestments
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTUtMS0xLTEtMjg4MDU_ee8f9841-7c75-4894-92bb-0c9341bd4a79"
      unitRef="usd">236000</us-gaap:GainLossOnSaleOfInvestments>
    <us-gaap:GainLossOnSaleOfInvestments
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTUtMy0xLTEtMjg4MDU_ca7bcde5-21a1-402f-8242-e09e22f3cc3f"
      unitRef="usd">4119000</us-gaap:GainLossOnSaleOfInvestments>
    <us-gaap:GainLossOnSaleOfInvestments
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTUtNS0xLTEtMjg4MDU_735f837f-2c06-4ff8-bb1e-b723dbe41897"
      unitRef="usd">1452000</us-gaap:GainLossOnSaleOfInvestments>
    <us-gaap:BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTYtMS0xLTEtMjg4MDU_b128288e-e67d-46f8-912c-738d2edf5408"
      unitRef="usd">0</us-gaap:BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1>
    <us-gaap:BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTYtMy0xLTEtMjg4MDU_88c7625d-1e78-441f-b55c-14f811253ba2"
      unitRef="usd">-114000</us-gaap:BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1>
    <us-gaap:BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTYtNS0xLTEtMjg4MDU_65dc70bb-607c-402f-97c9-79381ea1bbcc"
      unitRef="usd">-1401000</us-gaap:BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1>
    <us-gaap:IncreaseDecreaseInDeferredIncomeTaxes
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTctMS0xLTEtMjg4MDU_fbd9b2ea-6542-4d45-93e2-a056ce3a2920"
      unitRef="usd">3118000</us-gaap:IncreaseDecreaseInDeferredIncomeTaxes>
    <us-gaap:IncreaseDecreaseInDeferredIncomeTaxes
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTctMy0xLTEtMjg4MDU_cfd15470-48c7-48a1-8fe0-81f5eea7d2d7"
      unitRef="usd">3353000</us-gaap:IncreaseDecreaseInDeferredIncomeTaxes>
    <us-gaap:IncreaseDecreaseInDeferredIncomeTaxes
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTctNS0xLTEtMjg4MDU_e34f2843-6c09-4d4d-a61b-843967b895f7"
      unitRef="usd">94866000</us-gaap:IncreaseDecreaseInDeferredIncomeTaxes>
    <us-gaap:IncreaseDecreaseInAccountsReceivable
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTktMS0xLTEtMjg4MDU_35f43b56-aed1-417f-8b45-978540f75312"
      unitRef="usd">4503000</us-gaap:IncreaseDecreaseInAccountsReceivable>
    <us-gaap:IncreaseDecreaseInAccountsReceivable
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTktMy0xLTEtMjg4MDU_ea315f74-116b-406a-b430-2c7e7c1bdef2"
      unitRef="usd">21285000</us-gaap:IncreaseDecreaseInAccountsReceivable>
    <us-gaap:IncreaseDecreaseInAccountsReceivable
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTktNS0xLTEtMjg4MDU_309a8d95-ff8a-48af-ab5d-88ef0158b3c1"
      unitRef="usd">-16807000</us-gaap:IncreaseDecreaseInAccountsReceivable>
    <us-gaap:IncreaseDecreaseInContractWithCustomerAsset
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjAtMS0xLTEtMjg4MDU_727e9f24-aa08-4079-9ea8-5e41bbd431a2"
      unitRef="usd">-1637000</us-gaap:IncreaseDecreaseInContractWithCustomerAsset>
    <us-gaap:IncreaseDecreaseInContractWithCustomerAsset
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjAtMy0xLTEtMjg4MDU_85927654-bfe2-40ea-81b6-2bd8cc03189b"
      unitRef="usd">848000</us-gaap:IncreaseDecreaseInContractWithCustomerAsset>
    <us-gaap:IncreaseDecreaseInContractWithCustomerAsset
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjAtNS0xLTEtMjg4MDU_06213098-9a7d-4297-b4d6-f8fb70d78ad7"
      unitRef="usd">-3530000</us-gaap:IncreaseDecreaseInContractWithCustomerAsset>
    <us-gaap:IncreaseDecreaseInInventories
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjEtMS0xLTEtMjg4MDU_ddbd7239-d626-4b78-8c41-0679a5eaa413"
      unitRef="usd">54920000</us-gaap:IncreaseDecreaseInInventories>
    <us-gaap:IncreaseDecreaseInInventories
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjEtMy0xLTEtMjg4MDU_4b5e444b-406d-4ce5-aed5-f0eeaee64052"
      unitRef="usd">10319000</us-gaap:IncreaseDecreaseInInventories>
    <us-gaap:IncreaseDecreaseInInventories
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjEtNS0xLTEtMjg4MDU_76fcd120-7b87-4c53-ac0a-72fceb909dbd"
      unitRef="usd">-17841000</us-gaap:IncreaseDecreaseInInventories>
    <us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjItMS0xLTEtMjg4MDU_23400815-b748-43ae-b422-e2a74e09779a"
      unitRef="usd">32342000</us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets>
    <us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjItMy0xLTEtMjg4MDU_9eb634f5-4fca-46c7-8f7e-e1a02227597d"
      unitRef="usd">9909000</us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets>
    <us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjItNS0xLTEtMjg4MDU_a4331382-0b83-4a2b-a17f-267b5265ebb3"
      unitRef="usd">-7405000</us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets>
    <us-gaap:IncreaseDecreaseInAccountsPayable
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjMtMS0xLTEtMjg4MDU_b3d93b38-f6e7-4301-a92b-d2baf809e676"
      unitRef="usd">27828000</us-gaap:IncreaseDecreaseInAccountsPayable>
    <us-gaap:IncreaseDecreaseInAccountsPayable
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjMtMy0xLTEtMjg4MDU_b83703d2-0cf2-464b-b004-7ab8e2fa8697"
      unitRef="usd">-1688000</us-gaap:IncreaseDecreaseInAccountsPayable>
    <us-gaap:IncreaseDecreaseInAccountsPayable
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjMtNS0xLTEtMjg4MDU_d4013814-0e07-442e-8493-7190606b3d17"
      unitRef="usd">1633000</us-gaap:IncreaseDecreaseInAccountsPayable>
    <us-gaap:IncreaseDecreaseInAccruedLiabilities
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjQtMS0xLTEtMjg4MDU_7c9373ed-fb77-4db6-bd55-46d8601d1049"
      unitRef="usd">16861000</us-gaap:IncreaseDecreaseInAccruedLiabilities>
    <us-gaap:IncreaseDecreaseInAccruedLiabilities
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjQtMy0xLTEtMjg4MDU_bc4edef1-7b11-44e9-aa68-70989e575b3f"
      unitRef="usd">24542000</us-gaap:IncreaseDecreaseInAccruedLiabilities>
    <us-gaap:IncreaseDecreaseInAccruedLiabilities
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjQtNS0xLTEtMjg4MDU_2c7ef46c-d5a4-4b0b-bbfa-1cf1f241a9ee"
      unitRef="usd">-8938000</us-gaap:IncreaseDecreaseInAccruedLiabilities>
    <us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjUtMS0xLTEtMjg4MDU_e5153426-86d4-479c-afa6-04ad412518ac"
      unitRef="usd">-6401000</us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable>
    <us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjUtMy0xLTEtMjg4MDU_73478759-5d67-4fc5-8bec-8bbb2a19c2ad"
      unitRef="usd">-22973000</us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable>
    <us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjUtNS0xLTEtMjg4MDU_9bafd538-e874-45f5-98b2-9454d5356a36"
      unitRef="usd">25266000</us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable>
    <us-gaap:IncreaseDecreaseInContractWithCustomerLiability
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjYtMS0xLTEtMjg4MDU_74115d4a-578e-4352-ac3e-a75fbd64c03f"
      unitRef="usd">14417000</us-gaap:IncreaseDecreaseInContractWithCustomerLiability>
    <us-gaap:IncreaseDecreaseInContractWithCustomerLiability
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjYtMy0xLTEtMjg4MDU_2eb00f5a-351f-4c82-a8b3-f0be54cd3137"
      unitRef="usd">6571000</us-gaap:IncreaseDecreaseInContractWithCustomerLiability>
    <us-gaap:IncreaseDecreaseInContractWithCustomerLiability
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjYtNS0xLTEtMjg4MDU_3f8caf77-62cd-4826-9759-bb8ece72af96"
      unitRef="usd">3875000</us-gaap:IncreaseDecreaseInContractWithCustomerLiability>
    <us-gaap:IncreaseDecreaseInOtherOperatingCapitalNet
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjctMS0xLTEtMjg4MDU_e1587b2f-4d0e-46e4-b6ed-757494953ad3"
      unitRef="usd">-3411000</us-gaap:IncreaseDecreaseInOtherOperatingCapitalNet>
    <us-gaap:IncreaseDecreaseInOtherOperatingCapitalNet
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjctMy0xLTEtMjg4MDU_987dc2b8-d31a-492f-8188-f09b6c9d339a"
      unitRef="usd">-4548000</us-gaap:IncreaseDecreaseInOtherOperatingCapitalNet>
    <us-gaap:IncreaseDecreaseInOtherOperatingCapitalNet
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjctNS0xLTEtMjg4MDU_db62be8e-6ebe-44c4-861a-80159f88eb36"
      unitRef="usd">-4255000</us-gaap:IncreaseDecreaseInOtherOperatingCapitalNet>
    <us-gaap:NetCashProvidedByUsedInOperatingActivities
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjgtMS0xLTEtMjg4MDU_d478d2a4-2b44-4e8b-952d-58de26ceadf1"
      unitRef="usd">314065000</us-gaap:NetCashProvidedByUsedInOperatingActivities>
    <us-gaap:NetCashProvidedByUsedInOperatingActivities
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjgtMy0xLTEtMjg4MDU_6c7223e9-87b7-4727-86a2-6ae2febc16e4"
      unitRef="usd">242400000</us-gaap:NetCashProvidedByUsedInOperatingActivities>
    <us-gaap:NetCashProvidedByUsedInOperatingActivities
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjgtNS0xLTEtMjg4MDU_c1015e07-1d36-4b66-a187-c21c06aba287"
      unitRef="usd">253311000</us-gaap:NetCashProvidedByUsedInOperatingActivities>
    <us-gaap:PaymentsToAcquireInvestments
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzAtMS0xLTEtMjg4MDU_05f03046-f493-4981-953a-553bc6d43735"
      unitRef="usd">668053000</us-gaap:PaymentsToAcquireInvestments>
    <us-gaap:PaymentsToAcquireInvestments
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzAtMy0xLTEtMjg4MDU_4839da4f-e9f6-43ff-a20f-558923da9011"
      unitRef="usd">922867000</us-gaap:PaymentsToAcquireInvestments>
    <us-gaap:PaymentsToAcquireInvestments
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzAtNS0xLTEtMjg4MDU_6715be55-79c7-4b44-a0e5-56c33de215b1"
      unitRef="usd">1031642000</us-gaap:PaymentsToAcquireInvestments>
    <us-gaap:ProceedsFromSaleMaturityAndCollectionsOfInvestments
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzEtMS0xLTEtMjg4MDU_7dec853c-4ea4-4c46-a6eb-46f844059e20"
      unitRef="usd">430969000</us-gaap:ProceedsFromSaleMaturityAndCollectionsOfInvestments>
    <us-gaap:ProceedsFromSaleMaturityAndCollectionsOfInvestments
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzEtMy0xLTEtMjg4MDU_a6858fd6-712c-4786-bd21-17b586e27eb9"
      unitRef="usd">1104605000</us-gaap:ProceedsFromSaleMaturityAndCollectionsOfInvestments>
    <us-gaap:ProceedsFromSaleMaturityAndCollectionsOfInvestments
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzEtNS0xLTEtMjg4MDU_16e072bc-a863-430f-bd84-823f4073ae28"
      unitRef="usd">1062962000</us-gaap:ProceedsFromSaleMaturityAndCollectionsOfInvestments>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzItMS0xLTEtMjg4MDU_9c7f6658-6011-4975-aa81-24d90d7e2d96"
      unitRef="usd">15455000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzItMy0xLTEtMjg4MDU_73ac78de-22f3-40a6-a16f-fe0231f29670"
      unitRef="usd">13303000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzItNS0xLTEtMjg4MDU_22e1311c-675b-490b-8602-59d62a2d93d1"
      unitRef="usd">21745000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzMtMS0xLTEtMjg4MDU_725693a7-50dd-44d7-87e2-a7fd2d614d15"
      unitRef="usd">0</us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired>
    <us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzMtMy0xLTEtMjg4MDU_14750bad-3ff3-4fab-8b74-aa0b584fc366"
      unitRef="usd">-1004000</us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired>
    <us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzMtNS0xLTEtMjg4MDU_9c876633-f02b-4ea9-a176-daa5cb1a7593"
      unitRef="usd">166911000</us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired>
    <us-gaap:NetCashProvidedByUsedInInvestingActivities
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzYtMS0xLTEtMjg4MDU_0aace99b-548d-4b22-a1e1-b0b0452de179"
      unitRef="usd">-252539000</us-gaap:NetCashProvidedByUsedInInvestingActivities>
    <us-gaap:NetCashProvidedByUsedInInvestingActivities
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzYtMy0xLTEtMjg4MDU_5b2766ee-a5dc-472a-83ff-88520f8ff306"
      unitRef="usd">169439000</us-gaap:NetCashProvidedByUsedInInvestingActivities>
    <us-gaap:NetCashProvidedByUsedInInvestingActivities
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzYtNS0xLTEtMjg4MDU_182431b5-0617-4277-a59f-9872153c4b56"
      unitRef="usd">-157336000</us-gaap:NetCashProvidedByUsedInInvestingActivities>
    <us-gaap:ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzgtMS0xLTEtMjg4MDU_d993735c-f54b-4dba-b9bc-a2579d0720d5"
      unitRef="usd">63292000</us-gaap:ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions>
    <us-gaap:ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzgtMy0xLTEtMjg4MDU_f5c5d46c-4324-4a08-9db0-741fba1b955a"
      unitRef="usd">125715000</us-gaap:ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions>
    <us-gaap:ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzgtNS0xLTEtMjg4MDU_88f8f469-145b-4a3c-b9a0-690449565d19"
      unitRef="usd">64581000</us-gaap:ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions>
    <us-gaap:PaymentsForRepurchaseOfCommonStock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzktMS0xLTEtMjg4MDU_082ff035-13cb-4a4c-91c3-03368ea2c275"
      unitRef="usd">161652000</us-gaap:PaymentsForRepurchaseOfCommonStock>
    <us-gaap:PaymentsForRepurchaseOfCommonStock
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzktMy0xLTEtMjg4MDU_0fb56da8-da31-43e7-a003-145f364917e4"
      unitRef="usd">51036000</us-gaap:PaymentsForRepurchaseOfCommonStock>
    <us-gaap:PaymentsForRepurchaseOfCommonStock
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzktNS0xLTEtMjg4MDU_0630a6b0-ff03-4c45-b332-4583528ece05"
      unitRef="usd">61690000</us-gaap:PaymentsForRepurchaseOfCommonStock>
    <us-gaap:PaymentsOfDividendsCommonStock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDAtMS0xLTEtMjg4MDU_4f90fc6f-1b14-4a40-ae58-4eecc8d57919"
      unitRef="usd">43263000</us-gaap:PaymentsOfDividendsCommonStock>
    <us-gaap:PaymentsOfDividendsCommonStock
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDAtMy0xLTEtMjg4MDU_b8569df4-0f0d-49cb-b0e9-41d40e22700f"
      unitRef="usd">390508000</us-gaap:PaymentsOfDividendsCommonStock>
    <us-gaap:PaymentsOfDividendsCommonStock
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDAtNS0xLTEtMjg4MDU_5feba9ef-7f6b-436c-bfd9-83868750de5e"
      unitRef="usd">35124000</us-gaap:PaymentsOfDividendsCommonStock>
    <us-gaap:PaymentForContingentConsiderationLiabilityFinancingActivities
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDEtMS0xLTEtMjg4MDU_aed0b02a-ed76-481c-b956-8003b77dd09c"
      unitRef="usd">0</us-gaap:PaymentForContingentConsiderationLiabilityFinancingActivities>
    <us-gaap:PaymentForContingentConsiderationLiabilityFinancingActivities
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDEtMy0xLTEtMjg4MDU_79f32653-e61f-42fb-910b-49d28c27f0df"
      unitRef="usd">1039000</us-gaap:PaymentForContingentConsiderationLiabilityFinancingActivities>
    <us-gaap:PaymentForContingentConsiderationLiabilityFinancingActivities
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDEtNS0xLTEtMjg4MDU_df98e00e-466a-45ad-ad2b-cf770744bf31"
      unitRef="usd">0</us-gaap:PaymentForContingentConsiderationLiabilityFinancingActivities>
    <us-gaap:NetCashProvidedByUsedInFinancingActivities
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDItMS0xLTEtMjg4MDU_0d16b82e-81c7-4348-a680-062bb1b3c40d"
      unitRef="usd">-141623000</us-gaap:NetCashProvidedByUsedInFinancingActivities>
    <us-gaap:NetCashProvidedByUsedInFinancingActivities
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDItMy0xLTEtMjg4MDU_d4189ae0-823b-4194-a438-f5d576d9317b"
      unitRef="usd">-316868000</us-gaap:NetCashProvidedByUsedInFinancingActivities>
    <us-gaap:NetCashProvidedByUsedInFinancingActivities
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDItNS0xLTEtMjg4MDU_1ef8d3fd-9279-4b45-a6eb-1e8e7a50c06e"
      unitRef="usd">-32233000</us-gaap:NetCashProvidedByUsedInFinancingActivities>
    <us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDMtMS0xLTEtMjg4MDU_3bd7091e-2064-4dfe-af15-50abdafa538b"
      unitRef="usd">-2815000</us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDMtMy0xLTEtMjg4MDU_3f25e3e8-c5e9-433b-9ef1-d0811e3c0b0e"
      unitRef="usd">2671000</us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDMtNS0xLTEtMjg4MDU_4cc698d2-8def-4a57-a844-9aa94db156c7"
      unitRef="usd">-523000</us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDQtMS0xLTEtMjg4MDU_5137d822-5a85-4777-911a-c34c6701778d"
      unitRef="usd">-82912000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDQtMy0xLTEtMjg4MDU_c00900fa-3501-44d7-b3c9-9222119af77e"
      unitRef="usd">97642000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDQtNS0xLTEtMjg4MDU_a76c7436-e363-40a1-b253-b904b15c1c4b"
      unitRef="usd">63219000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDUtMS0xLTEtMjg4MDU_322b7432-bac7-4c41-8058-cf56632eeed6"
      unitRef="usd">269073000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="ia991b13c7b074439964a26d579235ee4_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDUtMy0xLTEtMjg4MDU_9d347229-7dc5-4529-84ff-345902b1692d"
      unitRef="usd">171431000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="i96c261e6b700458483d45a690ef3428a_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDUtNS0xLTEtMjg4MDU_6d38e787-247e-4ffd-8d03-4536b47623e4"
      unitRef="usd">108212000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDYtMS0xLTEtMjg4MDU_dbed9f0f-073b-4277-82bb-f63dc4e8f130"
      unitRef="usd">186161000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDYtMy0xLTEtMjg4MDU_0884c928-b4af-4fdf-a792-092adde0fd81"
      unitRef="usd">269073000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="ia991b13c7b074439964a26d579235ee4_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDYtNS0xLTEtMjg4MDU_e7c6e100-f886-42ad-861f-4d5b9a09a161"
      unitRef="usd">171431000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CommonStockSharesIssued
      contextRef="i3dd0ad0816aa4def98e84f22e19e80a7_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMi0yLTEtMS0yODgwNQ_12932d92-d9ec-4b87-a89c-5f76a3af4f0c"
      unitRef="shares">170820000</us-gaap:CommonStockSharesIssued>
    <us-gaap:StockholdersEquity
      contextRef="i3dd0ad0816aa4def98e84f22e19e80a7_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMi00LTEtMS0yODgwNQ_aad289d9-e773-4ea0-9fdb-4321242cbdba"
      unitRef="usd">342000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="id5144431cfa8410c8f5604b0516d97a6_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMi02LTEtMS0yODgwNQ_42ce01a3-c7e9-49a5-8ff2-f5e3c2df6953"
      unitRef="usd">529208000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i4c4fc943007b4423b33adbf4b3ff8a57_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMi04LTEtMS0yODgwNQ_f32d7e3c-37ac-4633-9879-5be886ea6bac"
      unitRef="usd">646214000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i7df50ac0cf1c4b6eb205200699db5753_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMi0xMC0xLTEtMjg4MDU_35a63399-051e-4372-9461-b918d5a5cd52"
      unitRef="usd">-40501000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i96c261e6b700458483d45a690ef3428a_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMi0xMi0xLTEtMjg4MDU_5a369307-0385-4a94-bfa1-aac87b69a684"
      unitRef="usd">1135263000</us-gaap:StockholdersEquity>
    <us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised
      contextRef="ia0b61093361e40829a19e49f13b2aafd_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMy0yLTEtMS0yODgwNQ_7f580aa7-1e04-405f-9700-56349371df88"
      unitRef="shares">3018000</us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="ia0b61093361e40829a19e49f13b2aafd_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMy00LTEtMS0yODgwNQ_7d7fa7d2-04e1-453a-ab63-20143cc9825d"
      unitRef="usd">6000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="i3f6e0d6a6cf64e53b765f2631064f2c6_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMy02LTEtMS0yODgwNQ_5ed808bc-dd1f-4d59-acb3-40a8201d6feb"
      unitRef="usd">64575000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMy0xMi0xLTEtMjg4MDU_cbc0f17e-8210-435b-93f0-5b07452dee77"
      unitRef="usd">64581000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockRepurchasedDuringPeriodShares
      contextRef="ia0b61093361e40829a19e49f13b2aafd_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfNC0yLTEtMS0yODgwNQ_778b6f81-c636-424c-861e-4d8ffba6f552"
      unitRef="shares">1398000</us-gaap:StockRepurchasedDuringPeriodShares>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="ia0b61093361e40829a19e49f13b2aafd_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfNC00LTEtMS0yODgwNQ_a09d720c-5063-42fa-9d1f-fd056078d42b"
      unitRef="usd">3000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="i6c7a8f86994847a9817d41649947ff69_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfNC04LTEtMS0yODgwNQ_af40cbf0-82c2-471b-a107-bd1afd1cab6f"
      unitRef="usd">61687000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfNC0xMi0xLTEtMjg4MDU_5f7fd42c-941d-4b84-8a4f-b66209170e9c"
      unitRef="usd">61690000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="i3f6e0d6a6cf64e53b765f2631064f2c6_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfNS02LTEtMS0yODgwNQ_1e926bcd-ad7e-424f-9e17-01fcad06a482"
      unitRef="usd">45589000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfNS0xMi0xLTEtMjg4MDU_ad1c96ec-05ca-4abb-9f76-45238c1d2fe9"
      unitRef="usd">45589000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:DividendsCommonStockCash
      contextRef="i6c7a8f86994847a9817d41649947ff69_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfNi04LTEtMS0yODgwNQ_2a91ce4e-6a2e-44e1-9e5e-95ffca274a84"
      unitRef="usd">35124000</us-gaap:DividendsCommonStockCash>
    <us-gaap:DividendsCommonStockCash
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfNi0xMi0xLTEtMjg4MDU_b3c20c7d-bc57-435d-8ec4-4545d204a165"
      unitRef="usd">35124000</us-gaap:DividendsCommonStockCash>
    <us-gaap:NetIncomeLoss
      contextRef="i6c7a8f86994847a9817d41649947ff69_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfOC04LTEtMS0yODgwNQ_54ccb805-e529-4ea8-937d-c540d94e3dc0"
      unitRef="usd">203865000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfOC0xMi0xLTEtMjg4MDU_e906bb71-cd36-430d-a0fa-487de71f5ab9"
      unitRef="usd">203865000</us-gaap:NetIncomeLoss>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="i11575d448348449484334a63f5c382ec_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTEtMTAtMS0xLTI4ODA1_f8c2a891-d7f6-4b44-8b0d-3df5aa239950"
      unitRef="usd">5219000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTEtMTItMS0xLTI4ODA1_9d5f8440-39cf-43ff-ab4b-a24adb88dfab"
      unitRef="usd">5219000</us-gaap:OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
      contextRef="i11575d448348449484334a63f5c382ec_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTItMTAtMS0xLTI4ODA1_2b0ba709-d850-4f42-9368-8491ec853344"
      unitRef="usd">1452000</us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTItMTItMS0xLTI4ODA1_2bc6cf86-99c4-4bc1-9e1c-7fec24290f4d"
      unitRef="usd">1452000</us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="i11575d448348449484334a63f5c382ec_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTMtMTAtMS0xLTI4ODA1_3dc8b69e-e690-4848-96e4-2d1f39770f79"
      unitRef="usd">-541000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTMtMTItMS0xLTI4ODA1_56e03d7a-bf39-440b-bdea-7cbd27d26bbb"
      unitRef="usd">-541000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:CommonStockSharesIssued
      contextRef="i453cd53948004e0aa6fa938860922977_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTQtMi0xLTEtMjg4MDU_6bb9d6a6-2c32-4b63-9c00-82f39d7eb917"
      unitRef="shares">172440000</us-gaap:CommonStockSharesIssued>
    <us-gaap:StockholdersEquity
      contextRef="i453cd53948004e0aa6fa938860922977_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTQtNC0xLTEtMjg4MDU_e8ec5b51-945f-4a2e-ab49-44605d4f1ed5"
      unitRef="usd">345000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i030b7b3d0bcc48ecaee75f945d4b0453_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTQtNi0xLTEtMjg4MDU_82e031da-accf-4b51-96cd-f01c5809a434"
      unitRef="usd">639372000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i7081618970d14cb2b47071acddcb076f_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTQtOC0xLTEtMjg4MDU_f811e34b-569a-4554-9208-69c2e2d3f56c"
      unitRef="usd">753268000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="iad4f0d348bb84191a2d66c6f05e66a42_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTQtMTAtMS0xLTI4ODA1_1289ec3e-38e6-4081-a418-33a7f0003c2f"
      unitRef="usd">-37275000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="ia991b13c7b074439964a26d579235ee4_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTQtMTItMS0xLTI4ODA1_85500f67-8a6c-4551-b25b-dc0d32787aae"
      unitRef="usd">1355710000</us-gaap:StockholdersEquity>
    <us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised
      contextRef="i1bec50af29d2444694a1f7d69fe2b058_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTUtMi0xLTEtMjg4MDU_a3ed5db1-3681-4069-817d-acb47f626606"
      unitRef="shares">4565000</us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="i1bec50af29d2444694a1f7d69fe2b058_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTUtNC0xLTEtMjg4MDU_38950b7e-6eda-4d17-9c5a-edb84bfc5915"
      unitRef="usd">9000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="i8fac328c7b7844fca914b7bdbd8ea7e3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTUtNi0xLTEtMjg4MDU_c4a1b7e5-3e56-4e3a-b881-8463f75401fe"
      unitRef="usd">125706000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTUtMTItMS0xLTI4ODA1_af3dba44-8532-4757-9d47-18220f7e5121"
      unitRef="usd">125715000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockRepurchasedDuringPeriodShares
      contextRef="i1bec50af29d2444694a1f7d69fe2b058_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTYtMi0xLTEtMjg4MDU_23e0e242-fd56-4415-b54e-73003fadba48"
      unitRef="shares">1215000</us-gaap:StockRepurchasedDuringPeriodShares>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="i1bec50af29d2444694a1f7d69fe2b058_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTYtNC0xLTEtMjg4MDU_ae202d14-e7ba-4256-b93a-2f3bcbcd646a"
      unitRef="usd">2000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="i48d09c6cdb894c68b3c08b6d002654ff_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTYtOC0xLTEtMjg4MDU_3b411d3d-b6bf-4b05-8e84-f749bb9105bb"
      unitRef="usd">51034000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTYtMTItMS0xLTI4ODA1_fa04ee42-a367-4c84-b60c-d452957a4756"
      unitRef="usd">51036000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="i8fac328c7b7844fca914b7bdbd8ea7e3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTctNi0xLTEtMjg4MDU_b82f5302-9804-465f-baff-ad85cb8fad70"
      unitRef="usd">42661000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTctMTItMS0xLTI4ODA1_3a006046-7d63-4a33-af77-8953afa58eb6"
      unitRef="usd">42661000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:DividendsCommonStockCash
      contextRef="i48d09c6cdb894c68b3c08b6d002654ff_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTgtOC0xLTEtMjg4MDU_68c1fe5b-f850-444b-8d1b-e7372b151c44"
      unitRef="usd">390508000</us-gaap:DividendsCommonStockCash>
    <us-gaap:DividendsCommonStockCash
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTgtMTItMS0xLTI4ODA1_e93da2d1-1acb-4c11-850e-f1f72e86f41b"
      unitRef="usd">390508000</us-gaap:DividendsCommonStockCash>
    <us-gaap:NetIncomeLoss
      contextRef="i48d09c6cdb894c68b3c08b6d002654ff_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTktOC0xLTEtMjg4MDU_bbf50c3a-ff81-492d-9716-ea2ab2ba986f"
      unitRef="usd">176186000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTktMTItMS0xLTI4ODA1_07b91acd-8121-4ffd-a81f-867b3033ba4f"
      unitRef="usd">176186000</us-gaap:NetIncomeLoss>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="i8c44a3dba82a42458c156905bedae3bf_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjItMTAtMS0xLTI4ODA1_f8f53b28-6bc3-49a9-a068-bf7bb9d8cfc8"
      unitRef="usd">6478000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjItMTItMS0xLTI4ODA1_a3a8bc7e-a749-4154-a57c-782c1eba034b"
      unitRef="usd">6478000</us-gaap:OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
      contextRef="i8c44a3dba82a42458c156905bedae3bf_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjMtMTAtMS0xLTI4ODA1_104487a4-6bd2-4786-9954-3ab21a801042"
      unitRef="usd">4119000</us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjMtMTItMS0xLTI4ODA1_7b82ecf7-3765-4eb7-baca-6a615e24391a"
      unitRef="usd">4119000</us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="i8c44a3dba82a42458c156905bedae3bf_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjQtMTAtMS0xLTI4ODA1_4f6b0361-259f-43c9-a77b-a037c0d65c4d"
      unitRef="usd">1115000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjQtMTItMS0xLTI4ODA1_9f0897d3-8c1e-41bb-8158-bb016f2bd6ee"
      unitRef="usd">1115000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:CommonStockSharesIssued
      contextRef="i9c19e11e3b0440699b8af52e65c3c7df_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjUtMi0xLTEtMjg4MDU_65d68bab-e85d-4c35-ad87-2280ebd9a81c"
      unitRef="shares">175790000</us-gaap:CommonStockSharesIssued>
    <us-gaap:StockholdersEquity
      contextRef="i9c19e11e3b0440699b8af52e65c3c7df_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjUtNC0xLTEtMjg4MDU_e234384f-1ae1-45be-96fe-6bc95750d2e1"
      unitRef="usd">352000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i82c8153d3c304531b0e739269e49f99c_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjUtNi0xLTEtMjg4MDU_a7a0357e-4f8a-4af2-bfa3-861616c6b849"
      unitRef="usd">807739000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i5da6d6afe29042359bdc6f1b874d4cb9_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjUtOC0xLTEtMjg4MDU_980f5786-69fa-4a86-bff2-6353c2bf9966"
      unitRef="usd">487912000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="ie93e1f918c464567bea84b17ce78960c_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjUtMTAtMS0xLTI4ODA1_c8a8be7c-c3ea-4d3b-927a-81907806da93"
      unitRef="usd">-33801000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjUtMTItMS0xLTI4ODA1_53b856ac-f584-4d9e-a82e-ae3b083dd09b"
      unitRef="usd">1262202000</us-gaap:StockholdersEquity>
    <us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised
      contextRef="i244ddaa1d19d4552979ee78fc0a3848d_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjYtMi0xLTEtMjg4MDU_980db0b7-1174-4b8c-8b6d-fefef50e103e"
      unitRef="shares">1703000</us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="i244ddaa1d19d4552979ee78fc0a3848d_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjYtNC0xLTEtMjg4MDU_e862e62b-fc5b-4a1f-8a11-f5a80568a846"
      unitRef="usd">3000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="i75a67c9bd3d748a19d8b927a5cd5d288_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjYtNi0xLTEtMjg4MDU_535cad92-70e3-48ef-a167-5a0a851bf97f"
      unitRef="usd">63289000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjYtMTItMS0xLTI4ODA1_688c471d-b0b2-4418-af73-544c7c8d2ed3"
      unitRef="usd">63292000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockRepurchasedDuringPeriodShares
      contextRef="i244ddaa1d19d4552979ee78fc0a3848d_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjctMi0xLTEtMjg4MDU_6e532fcd-e339-42d8-a92b-9cc114580887"
      unitRef="shares">2012000</us-gaap:StockRepurchasedDuringPeriodShares>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="i244ddaa1d19d4552979ee78fc0a3848d_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjctNC0xLTEtMjg4MDU_a8d4e631-f82a-4207-890a-a5bde56d8074"
      unitRef="usd">4000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="i8212cb032773436bbdfb00f533e4b319_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjctOC0xLTEtMjg4MDU_d8645358-eeee-4225-9edc-b4936a32a2e6"
      unitRef="usd">161648000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjctMTItMS0xLTI4ODA1_e7c1c321-ba5e-40c1-b0cf-f660d2a98497"
      unitRef="usd">161652000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="i75a67c9bd3d748a19d8b927a5cd5d288_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjgtNi0xLTEtMjg4MDU_cf6a4121-c4a7-4a4b-b12f-c1d719624d8c"
      unitRef="usd">43774000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjgtMTItMS0xLTI4ODA1_155e1de6-0844-43f5-ac1e-30f01ff895f7"
      unitRef="usd">43774000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:DividendsCommonStockCash
      contextRef="i8212cb032773436bbdfb00f533e4b319_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjktOC0xLTEtMjg4MDU_eea0464b-8eed-482d-857b-cfafea44207c"
      unitRef="usd">43263000</us-gaap:DividendsCommonStockCash>
    <us-gaap:DividendsCommonStockCash
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjktMTItMS0xLTI4ODA1_c857b2c1-3985-49b8-9d44-e400438d30ea"
      unitRef="usd">43263000</us-gaap:DividendsCommonStockCash>
    <us-gaap:NetIncomeLoss
      contextRef="i8212cb032773436bbdfb00f533e4b319_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjktOC0xLTEtMjkxOTA_8b7ef0bb-2bcb-4e02-8d5c-e270d2a90284"
      unitRef="usd">279881000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMzAtMTItMS0xLTI4ODA1_61a1aefc-04d5-49cb-9631-78f5a270b48a"
      unitRef="usd">279881000</us-gaap:NetIncomeLoss>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="ia081105dd8bd4aaaa1265cbf9c24acc2_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMzMtMTAtMS0xLTI4ODA1_1dd1fd40-edab-4d0d-8e68-0b91a5164637"
      unitRef="usd">-7152000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMzMtMTAtMS0xLTI4ODA1_b742f886-5ad2-49bb-acfc-377ae728e3a1"
      unitRef="usd">-7152000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMzMtMTItMS0xLTI4ODA1_b33a68d4-bc42-4f00-96ad-5572a1b08dc7"
      unitRef="usd">-7152000</us-gaap:OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMzUtMTAtMS0xLTI4ODA1_8beac94e-d0d6-4dca-a1e2-cbfa7ffda116"
      unitRef="usd">236000</us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
      contextRef="ia081105dd8bd4aaaa1265cbf9c24acc2_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMzUtMTAtMS0xLTI4ODA1_a73b989f-4a6f-4c86-86eb-cd252dddedf3"
      unitRef="usd">236000</us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMzUtMTItMS0xLTI4ODA1_2325f024-d4a6-4875-b5c0-5927528a0c57"
      unitRef="usd">236000</us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMzYtMTAtMS0xLTI4ODA1_343cbe48-d062-46c5-bac8-ae2ccdd12aeb"
      unitRef="usd">-6753000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="ia081105dd8bd4aaaa1265cbf9c24acc2_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMzYtMTAtMS0xLTI4ODA1_355fb131-335d-4929-a67b-e9aae1838af7"
      unitRef="usd">-6753000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMzYtMTItMS0xLTI4ODA1_86799173-7342-48e9-a21f-823c21b1fec8"
      unitRef="usd">-6753000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:CommonStockSharesIssued
      contextRef="ia417c41204b44fc68c2a79deecb306f3_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMzctMi0xLTEtMjg4MDU_f2b3004e-6207-4b67-8026-e5c0690a28d8"
      unitRef="shares">175481000</us-gaap:CommonStockSharesIssued>
    <us-gaap:StockholdersEquity
      contextRef="ia417c41204b44fc68c2a79deecb306f3_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMzctNC0xLTEtMjg4MDU_50ec5a79-60c3-4f75-b490-0604deba09d3"
      unitRef="usd">351000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i279b29b9bc484ec9be070b54e58d3f78_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMzctNi0xLTEtMjg4MDU_e89c45b2-7984-4bc3-b53b-4f94f705c874"
      unitRef="usd">914802000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="id7e84bf16cc948edbbb96f1890b28baa_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMzctOC0xLTEtMjg4MDU_23905f3c-69fb-4cd3-aad2-e48be69e6018"
      unitRef="usd">562882000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i09333c39ce8e4914b814b0cf653db4b2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMzctMTAtMS0xLTI4ODA1_db0a9c88-eeb3-4a48-8df3-3977a6ae5c8e"
      unitRef="usd">-47942000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMzctMTItMS0xLTI4ODA1_90d15771-7b73-405f-851c-085481087c38"
      unitRef="usd">1430093000</us-gaap:StockholdersEquity>
    <us-gaap:SignificantAccountingPoliciesTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDExNzg_326acf66-3c25-413d-8b88-733f9371eaaf">Summary of Significant Accounting Policies&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The accompanying consolidated financial statements reflect the application of the significant accounting policies described below.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Nature of Operations&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Cognex Corporation is a leading provider of machine vision products that capture and analyze visual information in order to automate manufacturing and distribution tasks where vision is required.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Use of Estimates in the Preparation of Financial Statements&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The preparation of financial statements in conformity with accounting principles generally accepted in the United States of America (U.S.&#160;GAAP) requires management to make estimates and judgments that affect the reported amounts of assets and liabilities and the disclosure of contingent liabilities as of the balance sheet date, and the reported amounts of revenues and expenses during the year. Actual results could differ from those estimates. Significant estimates and judgments include those related to revenue recognition, investments, inventories, intangible assets, stock-based compensation, income taxes, business acquisitions, and restructuring charges.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Basis of Consolidation&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The consolidated financial statements include the accounts of Cognex Corporation and its subsidiaries, all of which are wholly-owned. All intercompany accounts and transactions have been eliminated.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Foreign Currency Translation&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The financial statements of the Company&#x2019;s foreign subsidiaries, where the local currency is the functional currency, are translated using exchange rates in effect at the end of the year for assets and liabilities and average exchange rates during the year for results of operations. The resulting foreign currency translation adjustment, net of tax, is included in shareholders&#x2019; equity as accumulated other comprehensive loss.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Fair Value Measurements&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company applies a three-level valuation hierarchy for fair value measurements. The categorization of assets and liabilities within the valuation hierarchy is based on the lowest level of input that is significant to the measurement of fair value. Level&#160;1 inputs to the valuation methodology utilize unadjusted quoted market prices in active markets for identical assets and liabilities. Level 2 inputs to the valuation methodology are other observable inputs, including quoted market prices for similar assets and liabilities, quoted prices for identical and similar assets and liabilities in markets that are not active, or other inputs that are observable or can be corroborated by observable market data. Level 3 inputs to the valuation methodology are unobservable inputs based on management&#x2019;s best estimate of the inputs that market participants would use in pricing the asset or liability at the measurement date, including assumptions about risk. A change to the level of an asset or liability within the fair value hierarchy is determined at the end of a reporting period.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Cash, Cash Equivalents, and Investments&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Money market instruments, as well as debt securities with original maturities of three months or less, are classified as cash equivalents and are stated at amortized cost. Debt securities with original maturities greater than three months and remaining maturities of one year or less are classified as current investments. Debt securities with remaining maturities greater than one year are classified as non-current investments. It is the Company&#x2019;s policy to invest in investment-grade debt securities with effective maturities that do not exceed ten years.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Debt securities with original maturities greater than three months are designated as available-for-sale and are reported at fair value, with unrealized gains and losses, net of tax, included in shareholders&#x2019; equity as accumulated other comprehensive loss. Realized gains and losses are calculated using the specific identification method. Realized gains and losses, interest income, and the amortization of the discount or premium on debt securities arising at acquisition, are included in "Investment income" on the Consolidated Statements of Operations. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Management monitors its debt securities to determine whether a loss exists related to the credit quality of the issuer. If the present value of the cash flows expected to be collected from the security is less than the amortized cost basis of the security, then a credit loss exists and an allowance against the security for credit losses is recorded. The allowance is limited to the amount by which fair value is below amortized cost, recognizing that the investment could be sold at fair value. Credit losses continue to be remeasured in subsequent reporting periods. Credit losses and recoveries related to debt securities are included in &#x201c;Other income (expense)&#x201d; on the Consolidated Statements of &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Operations. When developing an estimate of expected credit losses, management considers all relevant information including historical experience, current conditions, and reasonable forecasts of expected future cash flows.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Accounts Receivable&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company extends credit with various payment terms to customers based on an evaluation of their financial condition. Accounts that are outstanding longer than the payment terms are considered to be past due. The Company establishes an allowance against accounts receivable for credit losses when it determines receivables are at risk for collection based on the length of time the receivable has been outstanding, the customer&#x2019;s current ability to pay its obligations to the Company, and general economic and industry conditions, as well as various other factors. Receivables are written off against this allowance in the period they are determined to be uncollectible and payments subsequently received on previously written-off receivables are recorded as a recovery of the credit loss. Credit losses and recoveries related to accounts receivable are included in "Selling, general, and administrative expenses" on the Consolidated Statements of Operations.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Inventories&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Inventories are stated at the lower of cost and net realizable value. Cost is determined using standard costs, which approximates actual costs under the first-in, first-out (FIFO) method. Net realizable value is the estimated selling price in the ordinary course of business, less reasonably predictable costs of completion, disposal, and transportation.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Purchase price variances are incurred when actual costs are different than standard costs due to favorable or unfavorable market prices. Management applies judgment to recognize purchase price variances in the same period that the associated standard costs of the finished goods that consume these components are sold.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company&#x2019;s inventory is subject to technological change or obsolescence. The Company reviews inventory quantities on hand and estimates excess and obsolescence exposures based on assumptions about future demand, product transitions, and general economic and industry conditions, and records reserves to reduce the carrying value of inventories to their net realizable value. If actual future demand is less than estimated, additional inventory write-downs would be required.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company generally disposes of obsolete inventory upon determination of obsolescence. The Company does not dispose of excess inventory immediately, due to the possibility that some of this inventory could be sold to customers as a result of differences between actual and forecasted demand. When inventory has been written down below cost, such reduced amount is considered the new cost basis for subsequent accounting purposes. As a result, the Company could recognize a higher than normal gross margin if the reserved inventory were subsequently sold.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Property, Plant, and Equipment&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Property, plant, and equipment are stated at cost and depreciated using the straight-line method over the assets&#x2019; estimated useful lives. Buildings&#x2019; useful lives are 39 years, building improvements&#x2019; useful lives are ten years, and the useful lives of computer hardware and software, manufacturing test equipment, and furniture and fixtures range from &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNzgyMQ_c33774f8-7ea1-4d45-9f46-f9e48f3888ad"&gt;two&lt;/span&gt; to ten years. Leasehold improvements are depreciated over the shorter of the estimated useful lives or the remaining terms of the leases. Maintenance and repairs are expensed when incurred; additions and improvements are capitalized. Upon retirement or disposition, the cost and related accumulated depreciation of the disposed assets are removed from the accounts, with any resulting gain or loss included in current operations.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Internal-use Software&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Internal-use software is software acquired, internally developed, or modified solely to meet the Company's internal needs, and during the software's development, no substantive plan exists to sell the software. The accounting treatment for computer software developed for internal use depends on the nature of activities performed at each stage of development. The preliminary project stage includes conceptual formulation of design alternatives, determination of system requirements, vendor demonstrations, and final selection of vendors, and during this stage costs are expensed as incurred. The application development stage includes software configuration, coding, hardware installation, and testing. During this stage, certain costs are capitalized, including external direct costs of materials and services, as well as payroll and payroll-related costs for employees who are directly associated with the project, while certain costs are expensed as incurred, including training and data conversion costs. The post-implementation stage includes support and maintenance, and during this stage costs are expensed as incurred.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Capitalization begins when both the preliminary project stage is completed and management commits to funding the project. Capitalization ceases at the point the project is substantially complete and ready for its intended use, that is, after all substantial testing is completed. Costs of specified upgrades and enhancements to internal-use software are capitalized if it is probable that those expenditures result in additional functionality. Capitalized costs are amortized on a straight-line basis over the estimated useful life.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Leases&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;At inception of a contract, the Company determines whether that contract is or contains a lease by assessing whether there is an identified asset and whether the contract conveys the right to control the use of the identified asset for a period of time in exchange for consideration. The Company has control of the asset if it has the right to direct the use of the asset and obtains substantially all of the economic benefits from the use of the asset throughout the period of use.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;As a practical expedient, the Company does not recognize a lease asset or lease liability for leases with a lease term of 12 months or less. In the determination of the lease term, the Company considers the existence of extension or termination options and the probability of those options being exercised.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Lease contracts may include lease components and non-lease components, such as common area maintenance and utilities for property leases. As a practical expedient, the Company accounts for the non-lease components together with the lease components as a single lease component for all of its leases.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company classifies a lease as a finance lease when it meets any of the following criteria at the lease commencement date: (1) the lease transfers ownership of the underlying asset to the Company by the end of the lease term; (2) the lease grants the Company an option to purchase the underlying asset that the Company is reasonably certain to exercise; (3) the lease term is for the major part of the remaining economic life of the underlying asset (the Company considers a major part to be 75% or more of the remaining economic life of the underlying asset); (4) the present value of the sum of the lease payments and any residual value guaranteed by the Company equals or exceeds substantially all of the fair value of the underlying asset (the Company considers substantially all the fair value to be 90% or more of the fair value of the underlying asset amount); or (5) the underlying asset is of such a specialized nature that it is expected to have no alternative use to the lessor at the end of the lease term. When none of the criteria above are met, the Company classifies the lease as an operating lease.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;On the lease commencement date, the Company records a lease asset and lease liability on the balance sheet. The lease asset consists of: (1) the amount of the initial lease liability; (2) any lease payments made to the lessor at or before the lease commencement date, minus any lease incentives received; and (3) any initial direct cost incurred by the Company. Initial direct costs are incremental costs of a lease that would not have been incurred if the lease had not been obtained and are capitalized as part of the lease asset. The lease liability equals the present value of the future cash payments discounted using the Company's incremental borrowing rate. The Company&#x2019;s incremental borrowing rate is the rate of interest that the Company would have to pay to borrow an amount equal to the lease payments over a similar term, which is the three-month London Interbank Offered Rate (LIBOR) plus a 2% credit risk spread.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Operating lease expense equals the total cash payments recognized on a straight-line basis over the lease term. The amortization of the lease asset is calculated as the straight-line lease expense less the accretion of the interest on the lease liability each period. The lease liability is reduced by the cash payment less the interest each period.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Goodwill&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Goodwill is stated at cost. The Company evaluates the potential impairment of goodwill annually each fourth quarter and whenever events or circumstances indicate the carrying value of the goodwill may not be recoverable. The Company performs a qualitative assessment of goodwill to determine whether further impairment testing is necessary. Factors that management considers in this assessment include general economic and industry conditions, overall financial performance (both current and projected), changes in strategy, changes in the composition or carrying amount of net assets, and market capitalization. If this qualitative assessment indicates that it is more likely than not that the fair value of a reporting unit is less than its carrying value, the Company would proceed to perform a quantitative impairment test. Under this quantitative analysis, the fair value of the reporting unit is compared with its carrying value, including goodwill. If the carrying value exceeds the fair value of the reporting unit, the Company recognizes an impairment charge. The Company estimates the fair value of its reporting unit using the income approach based on a discounted cash flow model. In addition, the Company uses the market approach, which compares the reporting unit to publicly-traded companies and transactions involving &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;similar businesses, to support the conclusions based on the income approach. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Intangible Assets&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Intangible assets are stated at cost and amortized over the assets&#x2019; estimated useful lives. Intangible assets are either amortized in relation to the relative cash flows anticipated from the intangible asset or using the straight-line method, depending on facts and circumstances. The useful lives of distribution networks range from &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTUyOTQ_5ce0e008-7055-453c-8ab4-01cc6d71497e"&gt;eleven&lt;/span&gt; to twelve years, completed technologies from &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTUzMzU_a0e5581d-45c8-4009-8aef-5032532f120c"&gt;five&lt;/span&gt; to eight years, customer relationships from &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTUzNzY_6d2ebdfe-29d5-4397-b25e-08f04b35e467"&gt;five&lt;/span&gt; to eight years, non-compete agreements from &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTU0MTc_c368a7b6-2b8c-45a1-af82-100a86daedb3"&gt;three&lt;/span&gt; to seven years, and trademarks two years. In-process technology is an indefinite-lived intangible asset until the technology is completed, at which point it is amortized over its estimated useful life. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company evaluates the potential impairment of intangible assets whenever events or circumstances indicate the carrying value of the assets may not be recoverable. For finite-lived intangible assets that are subject to amortization, the Company follows a two-step process for impairment testing. In step one, known as the recoverability test, the carrying value of the asset is compared to the sum of the undiscounted cash flows expected to result from the use and eventual disposition of the asset. If the sum of the undiscounted future cash flows is less than the carrying value, the asset is not recoverable and step two is performed. In step two, the impairment charge is measured as the amount by which the carrying value of the asset exceeds its fair value. For indefinite-lived intangible assets that are not subject to amortization, the fair value of the asset is measured and an impairment charge is recorded as the amount by which the carrying value of the asset exceeds its fair value.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Warranty Obligations&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company warrants its products to be free from defects in material and workmanship for periods primarily ranging from &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTY3NDk_4673adf5-908a-4c87-aadc-eb029c283b79"&gt;one&lt;/span&gt; to three years from the time of sale based on the product being purchased and the terms of the customer arrangement. Warranty obligations are evaluated and recorded at the time of sale since it is probable that customers will make claims under warranties related to products that have been sold and the amount of these claims can be reasonably estimated based on historical costs to fulfill claims. Obligations may also be recorded subsequent to the time of sale whenever specific events or circumstances impacting product quality become known that would not have been taken into account using historical data.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Contingencies&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Loss contingencies are accrued if the loss is probable and the amount of the loss can be reasonably estimated. Legal costs associated with potential loss contingencies are expensed as incurred.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Derivative Instruments&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Derivative instruments are recorded on the Consolidated Balance Sheets at fair value. Changes in the fair value of the Company&#x2019;s economic hedges utilizing foreign currency forward contracts are included in "Foreign currency gain (loss)" on the Consolidated Statements of Operations. The Company recognizes all derivative instruments as either current assets or current liabilities at fair value on the Consolidated Balance Sheets. When the Company is engaged in more than one outstanding derivative contract with the same counterparty and also has a legally enforceable master netting agreement with that counterparty, the &#x201c;net&#x201d; mark-to-market exposure represents the netting of the positive and negative exposures with that counterparty. The cash flows from derivative instruments are presented in the same category on the Consolidated Statements of Cash Flows as the category for the cash flows from the hedged item. Generally, this accounting policy election results in cash flows related to derivative instruments being classified as an operating activity on the Consolidated Statements of Cash Flows. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Revenue Recognition&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company recognizes revenue in accordance with Accounting Standards Codification (ASC) 606, &#x201c;Revenue from Contracts with Customers.&#x201d; The core principle of ASC 606 is to recognize revenue in a manner that depicts the transfer of promised goods or services to customers in an amount that reflects the consideration to which the Company expects to be entitled in exchange for those goods or services. The framework in support of this core principle includes: (1) identifying the contract with the customer; (2) identifying the performance obligations in the contract; (3) determining the transaction price; (4) allocating the transaction price to the performance obligations; and (5) recognizing revenue when (or as) the performance obligations are satisfied. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Identifying the Contract with the Customer&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:3pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company identifies contracts with customers as agreements that create enforceable rights and obligations, which typically take the form of customer contracts or purchase orders. The Company accounts for a contract when it has approval and commitment from both parties, the rights of the parties are identified, payment terms are identified, the contract has commercial substance, and collectability of consideration is probable.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Identifying the Performance Obligations in the Contract&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:3pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company identifies performance obligations as promises in contracts to transfer distinct goods or services. Standard products and services that the Company regularly sells separately, which customers can benefit from either on their own or with other readily available resources and are distinct within the context of the customer contract, are accounted for as distinct performance obligations. Application-specific customer solutions that are comprised of a combination of products and services are accounted for as one performance obligation to deliver a total solution to the customer. On-site support services that are provided to the customer after the solution is deployed are accounted for as a separate performance obligation. These solutions are provided to customers in a variety of industries, including the consumer electronics and logistics industries. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Shipping and handling activities for which the Company is responsible under the terms and conditions of the sale are not accounted for as performance obligations but as fulfillment costs. These activities are required to fulfill the Company&#x2019;s promise to transfer the goods and are expensed when revenue is recognized.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company does not assess whether promised goods or services are performance obligations if they are immaterial in the context of the contract. If revenue is recognized before immaterial promises have been completed, then the costs related to such immaterial promises are accrued at the time of sale.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Determining the Transaction Price&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:3pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company determines the transaction price as the amount of consideration it expects to receive in exchange for transferring promised goods or services to the customer. Amounts collected from customers for sales taxes are excluded from the transaction price. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;If a contract includes a variable amount, such as a rebate, then the Company estimates the transaction price using either the expected value or the most likely amount of consideration to be received, depending on the specific facts and circumstances. The Company includes estimated variable consideration in the transaction price only to the extent it is probable that a significant reversal of revenue will not occur when the uncertainty is resolved. The Company updates its estimate of variable consideration at the end of each reporting period to reflect changes in facts and circumstances.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company does not grant customers the explicit right to return product. However, from time to time, the Company may allow a customer to return a product. As a practical expedient, the Company estimates the transaction price using the expected value based on its history of return experience using a portfolio approach in which the Company&#x2019;s total revenue is reduced by an estimate of total customer returns. Management reasonably expects that the effect of applying a portfolio approach to a group of contracts would not differ materially from considering each contract separately.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Allocating the Transaction Price to the Performance Obligations&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:3pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company allocates the transaction price to each performance obligation at contract inception based on a relative stand-alone selling price basis, or the price at which the Company would sell the good or service separately to similar customers in similar circumstances.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Recognizing Revenue When (or As) the Performance Obligations are Satisfied&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:3pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company recognizes revenue when it transfers the promised goods or services to the customer. Revenue for standard products is recognized at the point in time when the customer obtains control of the goods, which is typically upon delivery when the customer has legal title, physical possession, the risks and rewards of ownership, and an enforceable obligation to pay for the products. Revenue for services, which are not material, is typically recognized over the time the service is provided. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Revenue for application-specific customer solutions is recognized at the point in time when the solution is validated, which is the point in time when the Company can objectively determine that the agreed-upon specifications in the contract have been met and the customer will accept the performance obligations in the arrangement. Although the customer may have taken legal title and physical possession of the goods when they arrived at the customer&#x2019;s &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;designated site, the significant risks and rewards of ownership transfer to the customer only upon validation. Revenue for on-site support services related to these solutions is recognized over the time the service is provided. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In certain instances, an arrangement may include customer-specified acceptance provisions or performance guarantees that allow the customer to accept or reject delivered products that do not meet the customer&#x2019;s specifications. If the Company can objectively determine that control of a good or service has been transferred to the customer in accordance with the agreed-upon specifications in the contract, then customer acceptance is a formality. If acceptance provisions are presumed to be substantive, then revenue is deferred until customer acceptance. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;For the Company&#x2019;s standard products and services, revenue recognition and billing typically occur at the same time. For application-specific customer solutions, however, the agreement with the customer may provide for billing terms which differ from revenue recognition criteria, resulting in either deferred revenue or unbilled revenue. Credit assessments are performed to determine payment terms, which vary by region, industry, and customer. Prepayment terms result in contract liabilities for customer deposits. When credit is granted to customers, payment is typically due 30 to 90 days from billing. The Company's contracts have an original expected duration of less than one year, and therefore as a practical expedient, the Company has elected to ignore the impact of the time value of money on a contract and to expense sales commissions. The Company recognizes an asset for costs to fulfill a contract if the costs relate directly to the contract and to future performance, and the costs are expected to be recovered. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Management exercises judgment when determining the amount of revenue to be recognized each period. Such judgments include, but are not limited to, assessing the customer&#x2019;s ability and intention to pay substantially all of the contract consideration when due, determining when two or more contracts should be combined and accounted for as a single contract, determining whether a contract modification has occurred, assessing whether promises are immaterial in the context of the contract, determining whether material promises in a contract represent distinct performance obligations, estimating the transaction price for a contract that contains variable consideration, determining the stand-alone selling price of each performance obligation, determining whether control is transferred over time or at a point in time for performance obligations, and assessing whether formal customer acceptance provisions are substantive.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Research and Development&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Research and development costs primarily include personnel-related costs, prototyping materials, and outside services. Research and development costs are expensed when incurred until technological feasibility has been established for the product. Thereafter, all software costs may be capitalized until the product is available for general release to customers. The Company determines technological feasibility at the time the product reaches beta in its stage of development. Historically, the time incurred between beta and general release to customers has been short, and therefore, the costs have been insignificant. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Advertising Costs&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Advertising costs are expensed as incurred and totaled $1,965,000 in 2021, $1,443,000 in 2020, and $1,385,000 in 2019.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Stock-Based Compensation&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company&#x2019;s stock-based awards that result in compensation expense consist of stock options and restricted stock units (RSUs). The Company has reserved a specific number of shares of its authorized but unissued shares for issuance upon the exercise of stock options or the settlement of RSUs. When a stock option is exercised or an RSU is settled, the Company issues new shares from this pool. The fair values of stock options are estimated on the grant date using a binomial lattice model. Management is responsible for determining the appropriate valuation model and estimating these fair values, and in doing so, considers a number of factors, including information provided by an outside valuation advisor and the observable market price of the Company's common stock on the grant date. The fair value of RSUs is determined based on the observable market price of the Company's common stock on the grant date less the present value of expected future dividends. When determining the grant-date fair value of stock-based awards, management further considers whether an adjustment is required to the observable market price or volatility of the Company's common stock that is used in the valuation as a result of material non-public information, if that information is expected to result in a material increase in share price.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company recognizes compensation expense related to stock-based awards using the graded attribution method, in which expense is recognized on a straight-line basis over the service period for each separately vesting &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;portion of the stock option or RSU as if the award was, in substance, multiple awards. The amount of compensation expense recognized at the end of the vesting period is based on the number of awards for which the requisite service has been completed. No compensation expense is recognized for awards that are forfeited for which the employee does not render the requisite service. The term &#x201c;forfeitures&#x201d; is distinct from &#x201c;expirations&#x201d; and represents only the unvested portion of the surrendered award. The Company applies estimated forfeiture rates to its unvested awards to arrive at the amount of compensation expense that is expected to be recognized over the requisite service period. At the end of each separately vesting portion of an award, the expense that was recognized by applying the estimated forfeiture rate is compared to the expense that should be recognized based on the employee&#x2019;s service, and an increase or decrease to compensation expense is recorded to true up the final expense.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Taxes&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company recognizes a tax position in its financial statements when that tax position, based solely upon its technical merits, is more likely than not to be sustained upon examination by the relevant taxing authority. Those tax positions failing to qualify for initial recognition are recognized in the first interim period in which they meet the more likely than not standard, or are resolved through negotiation or litigation with the taxing authority, or upon expiration of the statutes of limitations. Derecognition of a tax position that was previously recognized occurs when an entity subsequently determines that a tax position no longer meets the more likely than not threshold of being sustained.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Only the portion of the liability that is expected to be paid within one year is classified as a current liability. As a result, liabilities expected to be resolved without the payment of cash (e.g., resolution due to the expiration of the statutes of limitations) or are not expected to be paid within one year are not classified as current. It is the Company&#x2019;s policy to record estimated interest and penalties as income tax expense and tax credits as a reduction in income tax expense.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Deferred tax assets and liabilities are determined based on the differences between the financial statement and tax bases of assets and liabilities as measured by the enacted tax rates that will be in effect when these differences reverse. Valuation allowances are provided if, based on the weight of available evidence, it is more likely than not that some or all of the deferred tax assets will not be realized.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Tax Cuts and Jobs Act of 2017 imposed a minimum tax on foreign earnings related to intangible assets, known as the Global Intangible Low-Taxed Income (GILTI) tax. In 2019, the Company elected to account for the impact of the GILTI minimum tax in deferred taxes, a change from the Company&#x2019;s initial election made in 2018 whereby the GILTI minimum tax was included in income tax expense as incurred on an annual basis. The change is considered preferable, as it appropriately matches the Company&#x2019;s current and deferred income tax implications.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Sales tax in the United States and similar taxes in other jurisdictions that are collected from customers and remitted to government authorities are presented on a gross basis (i.e., a receivable from the customer with a corresponding payable to the government). Amounts collected from customers and retained by the Company during tax holidays are recognized as non-operating income when earned.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Net Income Per Share&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Basic net income per share is computed by dividing net income available to common shareholders by the weighted-average number of common shares outstanding for the period. Diluted net income per share is computed by dividing net income available to common shareholders by the weighted-average number of common shares outstanding for the period plus potential dilutive common shares. Dilutive common equivalent shares consist of stock options and restricted stock units and are calculated using the treasury stock method. Common equivalent shares do not qualify as participating securities. In periods where the Company records a net loss, potential common stock equivalents are not included in the calculation of diluted net loss per share as their effect would be anti-dilutive.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Comprehensive Income&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Comprehensive income is defined as the change in equity of a company during a period from transactions and other events and circumstances, excluding transactions resulting from investments by owners and distributions to owners. Accumulated other comprehensive loss, net of tax, consists of foreign currency translation adjustment losses of $43,665,000 and $36,912,000, as of December 31, 2021 and December 31, 2020, respectively; net unrealized losses on available-for-sale investments of $3,006,000 as of December 31, 2021, and net unrealized gains on available-for-sale investments of $4,382,000 as of December 31, 2020; and losses on currency swaps, net of gains on long-term intercompany loans of $1,271,000 at each year end.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Amounts reclassified from accumulated other comprehensive loss, net of tax, to investment income on the Consolidated Statements of Operations were net realized gains of $236,000, $4,119,000, and $1,452,000 for 2021, 2020, and 2019, respectively.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Concentrations of Risk&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Financial instruments that potentially subject the Company to concentrations of credit risk consist primarily of cash, cash equivalents, investments, and accounts receivable. The Company has certain domestic and foreign cash balances that exceed the insured limits set by the Federal Deposit Insurance Corporation (FDIC) in the United States and equivalent regulatory agencies in foreign countries. The Company primarily invests in investment-grade debt securities and has established guidelines relative to credit ratings, diversification, and maturities of its debt securities that maintain safety and liquidity. The Company has historically not experienced any significant realized losses on its debt securities.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;A single customer accounted for 17% of total revenue in 2021 and 15% of total accounts receivable as of December 31, 2021. Accounts receivable from a second customer accounted for 11% of total accounts receivable as of December 31, 2021. The Company performs ongoing credit evaluations of its customers and maintains allowances for potential credit losses. The Company has historically not experienced any significant losses related to the collection of its accounts receivable.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;A significant portion of the Company's products is presently manufactured by a third-party contractor located in Indonesia. This contract manufacturer has agreed to provide the Company with termination notification periods and last-time-buy rights, if and when that may be applicable. Our contract manufacturer's challenges in obtaining components and maintaining production have resulted in delays, and may continue to result in delays, in meeting our delivery schedules that, as a result, delay deliveries to our customers past their requested delivery date. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Certain key electronic and mechanical components, such as integrated circuit chips, are fundamental to the design of Cognex products. Due to the impact of the COVID-19 pandemic or other factors, we have experienced, and may continue to experience, disruptions to the supply of components for our products that have resulted, and may continue to result, in higher purchase costs, delivery costs, and manufacturing delays.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company sources components from preferred vendors that are selected based on price and performance considerations. In the event of a supply disruption from a preferred vendor, these components may typically be purchased from alternative vendors, which may result in higher purchase costs and manufacturing delays based on the time required to identify and obtain sufficient quantities from an alternative source.&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:12pt;font-weight:400;line-height:120%"&gt; &lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Certain of the Company&#x2019;s products utilize components that are available from only one source. If we are unable to secure adequate supply from these sources, we may have to redesign our products, which may lead to higher costs, delays in manufacturing, and possible loss of sales.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Business Acquisitions&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company determines whether a transaction qualifies as a business combination by applying the definition of a business, which requires the assets acquired and liabilities assumed to be inputs and processes that have the ability to contribute to the creation of outputs. The Company accounts for business combinations under the acquisition method of accounting, which requires the following steps: (1) identifying the acquirer, (2) determining the acquisition date, (3) recognizing and measuring the identifiable assets acquired and the liabilities assumed, and (4) recognizing and measuring goodwill. The Company measures the identifiable assets acquired and liabilities assumed at their estimated fair values as of the acquisition date. Management is responsible for determining the appropriate valuation model and estimated fair values, and in doing so, considers a number of factors, including information provided by an outside valuation advisor. Management primarily establishes fair value using the income approach based on a discounted cash flow model. The income approach requires the use of many assumptions and estimates including future revenues and expenses, as well as discount factors. Contingent consideration liabilities are reported at their estimated fair values based on probability-adjusted present values of the consideration expected to be paid, using significant inputs and estimates. Key assumptions used in these estimates include probability assessments with respect to the likelihood of achieving certain milestones and discount rates consistent with the level of risk of achievement. The fair values of these contingent consideration liabilities are remeasured each reporting period with changes in fair value included in "Other income (expense)" on the Consolidated Statements of Operations. Goodwill is recognized as of the acquisition date as the excess of the consideration transferred over the net amount of assets acquired and liabilities assumed. Transaction costs are expensed as incurred. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Restructuring Charges&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;One-time employee termination benefits as part of a restructuring activity exist at the date the plan of termination has been communicated to employees (the &#x201c;communication date&#x201d;) and meets all of the following criteria: (1) management, having the authority to approve the action, has committed to the plan of termination, (2) the plan identifies the number of employees to be terminated, their job classifications or functions and their locations, and the expected completion date, (3) the plan establishes the terms of the benefit arrangement in sufficient detail, and (4) actions required to complete the plan indicate it is unlikely that significant changes to the plan will be made. If employees are not required to render service until they are terminated in order to receive the termination benefits or will not be retained to render service beyond a minimum retention period, a liability for the termination benefits is recognized and measured at fair value at the communication date. Otherwise, a liability is measured initially at the communication date based on the fair value of the liability as of the termination date and recognized ratably over the future service period. Changes to the fair value of the liability are recorded as restructuring adjustments. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Closures of leased offices as part of a restructuring activity prior to the end of the contractual lease term are treated as abandoned right-to-use assets when the Company ceases to use the property for economic benefit and lacks either the intent or ability to sublease. The lease asset is written down to zero as of the abandonment date. Estimates of contract termination costs assume the Company will be obligated to pay the remaining rent over the contract period, and the lease liability continues to be recorded on the balance sheet. Subsequent negotiations that result in early contract terminations are recorded as favorable restructuring adjustments.&lt;/span&gt;&lt;/div&gt;Other associated costs as part of a restructuring activity include costs to consolidate facilities, costs to relocate employees, and legal fees incurred to research local statutory requirements and prepare termination agreements. These costs are recognized in the period in which the liability is incurred, which generally corresponds to the period in which the services are rendered.</us-gaap:SignificantAccountingPoliciesTextBlock>
    <cgnx:NatureOfOperationsPolicyTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDExNDg_40a95e71-8fc5-4f86-948a-23ff4b6514b2">&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Nature of Operations&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Cognex Corporation is a leading provider of machine vision products that capture and analyze visual information in order to automate manufacturing and distribution tasks where vision is required.&lt;/span&gt;&lt;/div&gt;</cgnx:NatureOfOperationsPolicyTextBlock>
    <us-gaap:UseOfEstimates
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDEyMzk_92b02fa3-65e3-45e7-91e5-1416c5d6ab90">&lt;div style="margin-bottom:5pt;margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Use of Estimates in the Preparation of Financial Statements&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The preparation of financial statements in conformity with accounting principles generally accepted in the United States of America (U.S.&#160;GAAP) requires management to make estimates and judgments that affect the reported amounts of assets and liabilities and the disclosure of contingent liabilities as of the balance sheet date, and the reported amounts of revenues and expenses during the year. Actual results could differ from those estimates. Significant estimates and judgments include those related to revenue recognition, investments, inventories, intangible assets, stock-based compensation, income taxes, business acquisitions, and restructuring charges.&lt;/span&gt;&lt;/div&gt;</us-gaap:UseOfEstimates>
    <us-gaap:ConsolidationPolicyTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDExNDA_b80e797b-904f-4951-9ec4-c8637f925944">&lt;div style="margin-bottom:5pt;margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Basis of Consolidation&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The consolidated financial statements include the accounts of Cognex Corporation and its subsidiaries, all of which are wholly-owned. All intercompany accounts and transactions have been eliminated.&lt;/span&gt;&lt;/div&gt;</us-gaap:ConsolidationPolicyTextBlock>
    <us-gaap:ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDEyNzE_7a7986c5-7d39-4a06-8579-668aaffa6260">&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Foreign Currency Translation&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The financial statements of the Company&#x2019;s foreign subsidiaries, where the local currency is the functional currency, are translated using exchange rates in effect at the end of the year for assets and liabilities and average exchange rates during the year for results of operations. The resulting foreign currency translation adjustment, net of tax, is included in shareholders&#x2019; equity as accumulated other comprehensive loss.&lt;/span&gt;&lt;/div&gt;</us-gaap:ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock>
    <us-gaap:FairValueOfFinancialInstrumentsPolicy
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDEyMjg_735557e8-5540-494f-881b-cb9b5f24fded">&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Fair Value Measurements&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company applies a three-level valuation hierarchy for fair value measurements. The categorization of assets and liabilities within the valuation hierarchy is based on the lowest level of input that is significant to the measurement of fair value. Level&#160;1 inputs to the valuation methodology utilize unadjusted quoted market prices in active markets for identical assets and liabilities. Level 2 inputs to the valuation methodology are other observable inputs, including quoted market prices for similar assets and liabilities, quoted prices for identical and similar assets and liabilities in markets that are not active, or other inputs that are observable or can be corroborated by observable market data. Level 3 inputs to the valuation methodology are unobservable inputs based on management&#x2019;s best estimate of the inputs that market participants would use in pricing the asset or liability at the measurement date, including assumptions about risk. A change to the level of an asset or liability within the fair value hierarchy is determined at the end of a reporting period.&lt;/span&gt;&lt;/div&gt;</us-gaap:FairValueOfFinancialInstrumentsPolicy>
    <us-gaap:InvestmentPolicyTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDEyMDg_511d7744-cfcd-41c7-9dda-5c383f7fe749">&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Cash, Cash Equivalents, and Investments&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Money market instruments, as well as debt securities with original maturities of three months or less, are classified as cash equivalents and are stated at amortized cost. Debt securities with original maturities greater than three months and remaining maturities of one year or less are classified as current investments. Debt securities with remaining maturities greater than one year are classified as non-current investments. It is the Company&#x2019;s policy to invest in investment-grade debt securities with effective maturities that do not exceed ten years.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Debt securities with original maturities greater than three months are designated as available-for-sale and are reported at fair value, with unrealized gains and losses, net of tax, included in shareholders&#x2019; equity as accumulated other comprehensive loss. Realized gains and losses are calculated using the specific identification method. Realized gains and losses, interest income, and the amortization of the discount or premium on debt securities arising at acquisition, are included in "Investment income" on the Consolidated Statements of Operations. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Management monitors its debt securities to determine whether a loss exists related to the credit quality of the issuer. If the present value of the cash flows expected to be collected from the security is less than the amortized cost basis of the security, then a credit loss exists and an allowance against the security for credit losses is recorded. The allowance is limited to the amount by which fair value is below amortized cost, recognizing that the investment could be sold at fair value. Credit losses continue to be remeasured in subsequent reporting periods. Credit losses and recoveries related to debt securities are included in &#x201c;Other income (expense)&#x201d; on the Consolidated Statements of &lt;/span&gt;&lt;/div&gt;Operations. When developing an estimate of expected credit losses, management considers all relevant information including historical experience, current conditions, and reasonable forecasts of expected future cash flows.</us-gaap:InvestmentPolicyTextBlock>
    <us-gaap:CashAndCashEquivalentsPolicyTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDEyMDg_ff03e124-fe84-4397-963f-d2419f8c685a">&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Cash, Cash Equivalents, and Investments&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Money market instruments, as well as debt securities with original maturities of three months or less, are classified as cash equivalents and are stated at amortized cost. Debt securities with original maturities greater than three months and remaining maturities of one year or less are classified as current investments. Debt securities with remaining maturities greater than one year are classified as non-current investments. It is the Company&#x2019;s policy to invest in investment-grade debt securities with effective maturities that do not exceed ten years.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Debt securities with original maturities greater than three months are designated as available-for-sale and are reported at fair value, with unrealized gains and losses, net of tax, included in shareholders&#x2019; equity as accumulated other comprehensive loss. Realized gains and losses are calculated using the specific identification method. Realized gains and losses, interest income, and the amortization of the discount or premium on debt securities arising at acquisition, are included in "Investment income" on the Consolidated Statements of Operations. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Management monitors its debt securities to determine whether a loss exists related to the credit quality of the issuer. If the present value of the cash flows expected to be collected from the security is less than the amortized cost basis of the security, then a credit loss exists and an allowance against the security for credit losses is recorded. The allowance is limited to the amount by which fair value is below amortized cost, recognizing that the investment could be sold at fair value. Credit losses continue to be remeasured in subsequent reporting periods. Credit losses and recoveries related to debt securities are included in &#x201c;Other income (expense)&#x201d; on the Consolidated Statements of &lt;/span&gt;&lt;/div&gt;Operations. When developing an estimate of expected credit losses, management considers all relevant information including historical experience, current conditions, and reasonable forecasts of expected future cash flows.</us-gaap:CashAndCashEquivalentsPolicyTextBlock>
    <cgnx:AvailableforsaleSecuritiesDebtMaturitiesEffectiveTermMaximum
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMzU1Ng_f57ac132-56c4-4ce0-9d84-4cbb0128d3f8">P10Y</cgnx:AvailableforsaleSecuritiesDebtMaturitiesEffectiveTermMaximum>
    <us-gaap:TradeAndOtherAccountsReceivablePolicy
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDEyMDk_36eaeb9f-5c42-4e50-8aca-6874964bed10">&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Accounts Receivable&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company extends credit with various payment terms to customers based on an evaluation of their financial condition. Accounts that are outstanding longer than the payment terms are considered to be past due. The Company establishes an allowance against accounts receivable for credit losses when it determines receivables are at risk for collection based on the length of time the receivable has been outstanding, the customer&#x2019;s current ability to pay its obligations to the Company, and general economic and industry conditions, as well as various other factors. Receivables are written off against this allowance in the period they are determined to be uncollectible and payments subsequently received on previously written-off receivables are recorded as a recovery of the credit loss. Credit losses and recoveries related to accounts receivable are included in "Selling, general, and administrative expenses" on the Consolidated Statements of Operations.&lt;/span&gt;&lt;/div&gt;</us-gaap:TradeAndOtherAccountsReceivablePolicy>
    <us-gaap:InventoryPolicyTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDExMTA_3cd453d6-59b9-436b-a1ee-60f05114c067">&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Inventories&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Inventories are stated at the lower of cost and net realizable value. Cost is determined using standard costs, which approximates actual costs under the first-in, first-out (FIFO) method. Net realizable value is the estimated selling price in the ordinary course of business, less reasonably predictable costs of completion, disposal, and transportation.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Purchase price variances are incurred when actual costs are different than standard costs due to favorable or unfavorable market prices. Management applies judgment to recognize purchase price variances in the same period that the associated standard costs of the finished goods that consume these components are sold.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company&#x2019;s inventory is subject to technological change or obsolescence. The Company reviews inventory quantities on hand and estimates excess and obsolescence exposures based on assumptions about future demand, product transitions, and general economic and industry conditions, and records reserves to reduce the carrying value of inventories to their net realizable value. If actual future demand is less than estimated, additional inventory write-downs would be required.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company generally disposes of obsolete inventory upon determination of obsolescence. The Company does not dispose of excess inventory immediately, due to the possibility that some of this inventory could be sold to customers as a result of differences between actual and forecasted demand. When inventory has been written down below cost, such reduced amount is considered the new cost basis for subsequent accounting purposes. As a result, the Company could recognize a higher than normal gross margin if the reserved inventory were subsequently sold.&lt;/span&gt;&lt;/div&gt;</us-gaap:InventoryPolicyTextBlock>
    <us-gaap:PropertyPlantAndEquipmentPolicyTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDEyNDg_58199548-55d7-4c46-92cc-8f17073a8956">&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Property, Plant, and Equipment&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Property, plant, and equipment are stated at cost and depreciated using the straight-line method over the assets&#x2019; estimated useful lives. Buildings&#x2019; useful lives are 39 years, building improvements&#x2019; useful lives are ten years, and the useful lives of computer hardware and software, manufacturing test equipment, and furniture and fixtures range from &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNzgyMQ_c33774f8-7ea1-4d45-9f46-f9e48f3888ad"&gt;two&lt;/span&gt; to ten years. Leasehold improvements are depreciated over the shorter of the estimated useful lives or the remaining terms of the leases. Maintenance and repairs are expensed when incurred; additions and improvements are capitalized. Upon retirement or disposition, the cost and related accumulated depreciation of the disposed assets are removed from the accounts, with any resulting gain or loss included in current operations.&lt;/span&gt;&lt;/div&gt;</us-gaap:PropertyPlantAndEquipmentPolicyTextBlock>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="i042f17eb78834accb0d70fa7b6537a83_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNzY0OQ_25b38ae6-4efa-4875-95b3-7d0018ce1abf">P39Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="id801c8716b924358a2daa2c6f91c5f88_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNzY5Mw_292a1262-c849-4e16-bfd1-497c5f0d18b1">P10Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="i12cf82d7d05c43c78d4287e35cb1a678_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNzgyNw_4e603ea9-03b7-4528-a63d-b919f3d83b7d">P10Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:InternalUseSoftwarePolicy
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDExNDk_7b3189b7-7bb6-41cf-b0d3-d9dd47614d59">&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Internal-use Software&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Internal-use software is software acquired, internally developed, or modified solely to meet the Company's internal needs, and during the software's development, no substantive plan exists to sell the software. The accounting treatment for computer software developed for internal use depends on the nature of activities performed at each stage of development. The preliminary project stage includes conceptual formulation of design alternatives, determination of system requirements, vendor demonstrations, and final selection of vendors, and during this stage costs are expensed as incurred. The application development stage includes software configuration, coding, hardware installation, and testing. During this stage, certain costs are capitalized, including external direct costs of materials and services, as well as payroll and payroll-related costs for employees who are directly associated with the project, while certain costs are expensed as incurred, including training and data conversion costs. The post-implementation stage includes support and maintenance, and during this stage costs are expensed as incurred.&lt;/span&gt;&lt;/div&gt;Capitalization begins when both the preliminary project stage is completed and management commits to funding the project. Capitalization ceases at the point the project is substantially complete and ready for its intended use, that is, after all substantial testing is completed. Costs of specified upgrades and enhancements to internal-use software are capitalized if it is probable that those expenditures result in additional functionality. Capitalized costs are amortized on a straight-line basis over the estimated useful life.</us-gaap:InternalUseSoftwarePolicy>
    <us-gaap:LesseeLeasesPolicyTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDExOTY_5b85a01f-8014-4acd-8a40-afe048a4fd43">&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Leases&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;At inception of a contract, the Company determines whether that contract is or contains a lease by assessing whether there is an identified asset and whether the contract conveys the right to control the use of the identified asset for a period of time in exchange for consideration. The Company has control of the asset if it has the right to direct the use of the asset and obtains substantially all of the economic benefits from the use of the asset throughout the period of use.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;As a practical expedient, the Company does not recognize a lease asset or lease liability for leases with a lease term of 12 months or less. In the determination of the lease term, the Company considers the existence of extension or termination options and the probability of those options being exercised.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Lease contracts may include lease components and non-lease components, such as common area maintenance and utilities for property leases. As a practical expedient, the Company accounts for the non-lease components together with the lease components as a single lease component for all of its leases.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company classifies a lease as a finance lease when it meets any of the following criteria at the lease commencement date: (1) the lease transfers ownership of the underlying asset to the Company by the end of the lease term; (2) the lease grants the Company an option to purchase the underlying asset that the Company is reasonably certain to exercise; (3) the lease term is for the major part of the remaining economic life of the underlying asset (the Company considers a major part to be 75% or more of the remaining economic life of the underlying asset); (4) the present value of the sum of the lease payments and any residual value guaranteed by the Company equals or exceeds substantially all of the fair value of the underlying asset (the Company considers substantially all the fair value to be 90% or more of the fair value of the underlying asset amount); or (5) the underlying asset is of such a specialized nature that it is expected to have no alternative use to the lessor at the end of the lease term. When none of the criteria above are met, the Company classifies the lease as an operating lease.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;On the lease commencement date, the Company records a lease asset and lease liability on the balance sheet. The lease asset consists of: (1) the amount of the initial lease liability; (2) any lease payments made to the lessor at or before the lease commencement date, minus any lease incentives received; and (3) any initial direct cost incurred by the Company. Initial direct costs are incremental costs of a lease that would not have been incurred if the lease had not been obtained and are capitalized as part of the lease asset. The lease liability equals the present value of the future cash payments discounted using the Company's incremental borrowing rate. The Company&#x2019;s incremental borrowing rate is the rate of interest that the Company would have to pay to borrow an amount equal to the lease payments over a similar term, which is the three-month London Interbank Offered Rate (LIBOR) plus a 2% credit risk spread.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Operating lease expense equals the total cash payments recognized on a straight-line basis over the lease term. The amortization of the lease asset is calculated as the straight-line lease expense less the accretion of the interest on the lease liability each period. The lease liability is reduced by the cash payment less the interest each period.&lt;/span&gt;&lt;/div&gt;</us-gaap:LesseeLeasesPolicyTextBlock>
    <us-gaap:GoodwillAndIntangibleAssetsGoodwillPolicy
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDExMjE_007cb5ed-8e52-4123-a2d2-29ae3e6b0b5e">&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Goodwill&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Goodwill is stated at cost. The Company evaluates the potential impairment of goodwill annually each fourth quarter and whenever events or circumstances indicate the carrying value of the goodwill may not be recoverable. The Company performs a qualitative assessment of goodwill to determine whether further impairment testing is necessary. Factors that management considers in this assessment include general economic and industry conditions, overall financial performance (both current and projected), changes in strategy, changes in the composition or carrying amount of net assets, and market capitalization. If this qualitative assessment indicates that it is more likely than not that the fair value of a reporting unit is less than its carrying value, the Company would proceed to perform a quantitative impairment test. Under this quantitative analysis, the fair value of the reporting unit is compared with its carrying value, including goodwill. If the carrying value exceeds the fair value of the reporting unit, the Company recognizes an impairment charge. The Company estimates the fair value of its reporting unit using the income approach based on a discounted cash flow model. In addition, the Company uses the market approach, which compares the reporting unit to publicly-traded companies and transactions involving &lt;/span&gt;&lt;/div&gt;similar businesses, to support the conclusions based on the income approach.</us-gaap:GoodwillAndIntangibleAssetsGoodwillPolicy>
    <us-gaap:IntangibleAssetsFiniteLivedPolicy
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDExNzQ_73b8b71b-a7cb-4b80-84fe-acea0d134fb9">&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Intangible Assets&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Intangible assets are stated at cost and amortized over the assets&#x2019; estimated useful lives. Intangible assets are either amortized in relation to the relative cash flows anticipated from the intangible asset or using the straight-line method, depending on facts and circumstances. The useful lives of distribution networks range from &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTUyOTQ_5ce0e008-7055-453c-8ab4-01cc6d71497e"&gt;eleven&lt;/span&gt; to twelve years, completed technologies from &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTUzMzU_a0e5581d-45c8-4009-8aef-5032532f120c"&gt;five&lt;/span&gt; to eight years, customer relationships from &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTUzNzY_6d2ebdfe-29d5-4397-b25e-08f04b35e467"&gt;five&lt;/span&gt; to eight years, non-compete agreements from &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTU0MTc_c368a7b6-2b8c-45a1-af82-100a86daedb3"&gt;three&lt;/span&gt; to seven years, and trademarks two years. In-process technology is an indefinite-lived intangible asset until the technology is completed, at which point it is amortized over its estimated useful life. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company evaluates the potential impairment of intangible assets whenever events or circumstances indicate the carrying value of the assets may not be recoverable. For finite-lived intangible assets that are subject to amortization, the Company follows a two-step process for impairment testing. In step one, known as the recoverability test, the carrying value of the asset is compared to the sum of the undiscounted cash flows expected to result from the use and eventual disposition of the asset. If the sum of the undiscounted future cash flows is less than the carrying value, the asset is not recoverable and step two is performed. In step two, the impairment charge is measured as the amount by which the carrying value of the asset exceeds its fair value. For indefinite-lived intangible assets that are not subject to amortization, the fair value of the asset is measured and an impairment charge is recorded as the amount by which the carrying value of the asset exceeds its fair value.&lt;/span&gt;&lt;/div&gt;</us-gaap:IntangibleAssetsFiniteLivedPolicy>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i826aff0c969544a5a804571eeeecac12_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTUzMDA_cf5fa3a6-7d37-4b6c-93dc-315b3c59acd8">P12Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i7caad8bad2f949faa4c2da1d3c09973c_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTUzNDE_eb6748f6-53fc-40e8-ba75-2751376bac1e">P8Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="ic244bf99eff947c5a9ba44ab7a5b9152_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTUzODI_b9d4ce04-6629-4f8b-a2a6-c6e001b6e4ea">P8Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i8f47b56746584e8cb790dd66dabcb5bd_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTU0MjM_f60735f5-27a8-4df5-9662-906a00028bdb">P7Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i498bff2ae83341f19a665c2ba6f5f152_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTU0NDI_4ed52dfa-3101-42c9-b3d0-520425239e98">P2Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:StandardProductWarrantyPolicy
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDEyOTE_b2526291-1d10-4fe9-bc79-15c4c6b8ead5">&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Warranty Obligations&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company warrants its products to be free from defects in material and workmanship for periods primarily ranging from &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTY3NDk_4673adf5-908a-4c87-aadc-eb029c283b79"&gt;one&lt;/span&gt; to three years from the time of sale based on the product being purchased and the terms of the customer arrangement. Warranty obligations are evaluated and recorded at the time of sale since it is probable that customers will make claims under warranties related to products that have been sold and the amount of these claims can be reasonably estimated based on historical costs to fulfill claims. Obligations may also be recorded subsequent to the time of sale whenever specific events or circumstances impacting product quality become known that would not have been taken into account using historical data.&lt;/span&gt;&lt;/div&gt;</us-gaap:StandardProductWarrantyPolicy>
    <cgnx:ProductWarrantyPeriod
      contextRef="i2bdea3feb5ee4e4395116243f2bbd0f8_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTY3NTU_ac11a9af-6bd0-4440-842b-72f958b0992a">P3Y</cgnx:ProductWarrantyPeriod>
    <us-gaap:CommitmentsAndContingenciesPolicyTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDEyOTI_b0cdc071-9f3a-4e56-a5c1-a0ae52bf3876">&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Contingencies&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Loss contingencies are accrued if the loss is probable and the amount of the loss can be reasonably estimated. Legal costs associated with potential loss contingencies are expensed as incurred.&lt;/span&gt;&lt;/div&gt;</us-gaap:CommitmentsAndContingenciesPolicyTextBlock>
    <us-gaap:DerivativesPolicyTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDExODQ_7e2aef9a-2d70-457e-afd3-fef228649085">Derivative InstrumentsDerivative instruments are recorded on the Consolidated Balance Sheets at fair value. Changes in the fair value of the Company&#x2019;s economic hedges utilizing foreign currency forward contracts are included in "Foreign currency gain (loss)" on the Consolidated Statements of Operations. The Company recognizes all derivative instruments as either current assets or current liabilities at fair value on the Consolidated Balance Sheets. When the Company is engaged in more than one outstanding derivative contract with the same counterparty and also has a legally enforceable master netting agreement with that counterparty, the &#x201c;net&#x201d; mark-to-market exposure represents the netting of the positive and negative exposures with that counterparty. The cash flows from derivative instruments are presented in the same category on the Consolidated Statements of Cash Flows as the category for the cash flows from the hedged item. Generally, this accounting policy election results in cash flows related to derivative instruments being classified as an operating activity on the Consolidated Statements of Cash Flows.</us-gaap:DerivativesPolicyTextBlock>
    <us-gaap:RevenueRecognitionPolicyTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDExMjY_02e9b072-022a-4fc1-b919-a0b77545bd94">&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Revenue Recognition&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company recognizes revenue in accordance with Accounting Standards Codification (ASC) 606, &#x201c;Revenue from Contracts with Customers.&#x201d; The core principle of ASC 606 is to recognize revenue in a manner that depicts the transfer of promised goods or services to customers in an amount that reflects the consideration to which the Company expects to be entitled in exchange for those goods or services. The framework in support of this core principle includes: (1) identifying the contract with the customer; (2) identifying the performance obligations in the contract; (3) determining the transaction price; (4) allocating the transaction price to the performance obligations; and (5) recognizing revenue when (or as) the performance obligations are satisfied. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Identifying the Contract with the Customer&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:3pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company identifies contracts with customers as agreements that create enforceable rights and obligations, which typically take the form of customer contracts or purchase orders. The Company accounts for a contract when it has approval and commitment from both parties, the rights of the parties are identified, payment terms are identified, the contract has commercial substance, and collectability of consideration is probable.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Identifying the Performance Obligations in the Contract&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:3pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company identifies performance obligations as promises in contracts to transfer distinct goods or services. Standard products and services that the Company regularly sells separately, which customers can benefit from either on their own or with other readily available resources and are distinct within the context of the customer contract, are accounted for as distinct performance obligations. Application-specific customer solutions that are comprised of a combination of products and services are accounted for as one performance obligation to deliver a total solution to the customer. On-site support services that are provided to the customer after the solution is deployed are accounted for as a separate performance obligation. These solutions are provided to customers in a variety of industries, including the consumer electronics and logistics industries. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Shipping and handling activities for which the Company is responsible under the terms and conditions of the sale are not accounted for as performance obligations but as fulfillment costs. These activities are required to fulfill the Company&#x2019;s promise to transfer the goods and are expensed when revenue is recognized.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company does not assess whether promised goods or services are performance obligations if they are immaterial in the context of the contract. If revenue is recognized before immaterial promises have been completed, then the costs related to such immaterial promises are accrued at the time of sale.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Determining the Transaction Price&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:3pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company determines the transaction price as the amount of consideration it expects to receive in exchange for transferring promised goods or services to the customer. Amounts collected from customers for sales taxes are excluded from the transaction price. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;If a contract includes a variable amount, such as a rebate, then the Company estimates the transaction price using either the expected value or the most likely amount of consideration to be received, depending on the specific facts and circumstances. The Company includes estimated variable consideration in the transaction price only to the extent it is probable that a significant reversal of revenue will not occur when the uncertainty is resolved. The Company updates its estimate of variable consideration at the end of each reporting period to reflect changes in facts and circumstances.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company does not grant customers the explicit right to return product. However, from time to time, the Company may allow a customer to return a product. As a practical expedient, the Company estimates the transaction price using the expected value based on its history of return experience using a portfolio approach in which the Company&#x2019;s total revenue is reduced by an estimate of total customer returns. Management reasonably expects that the effect of applying a portfolio approach to a group of contracts would not differ materially from considering each contract separately.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Allocating the Transaction Price to the Performance Obligations&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:3pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company allocates the transaction price to each performance obligation at contract inception based on a relative stand-alone selling price basis, or the price at which the Company would sell the good or service separately to similar customers in similar circumstances.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Recognizing Revenue When (or As) the Performance Obligations are Satisfied&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:3pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company recognizes revenue when it transfers the promised goods or services to the customer. Revenue for standard products is recognized at the point in time when the customer obtains control of the goods, which is typically upon delivery when the customer has legal title, physical possession, the risks and rewards of ownership, and an enforceable obligation to pay for the products. Revenue for services, which are not material, is typically recognized over the time the service is provided. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Revenue for application-specific customer solutions is recognized at the point in time when the solution is validated, which is the point in time when the Company can objectively determine that the agreed-upon specifications in the contract have been met and the customer will accept the performance obligations in the arrangement. Although the customer may have taken legal title and physical possession of the goods when they arrived at the customer&#x2019;s &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;designated site, the significant risks and rewards of ownership transfer to the customer only upon validation. Revenue for on-site support services related to these solutions is recognized over the time the service is provided. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In certain instances, an arrangement may include customer-specified acceptance provisions or performance guarantees that allow the customer to accept or reject delivered products that do not meet the customer&#x2019;s specifications. If the Company can objectively determine that control of a good or service has been transferred to the customer in accordance with the agreed-upon specifications in the contract, then customer acceptance is a formality. If acceptance provisions are presumed to be substantive, then revenue is deferred until customer acceptance. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;For the Company&#x2019;s standard products and services, revenue recognition and billing typically occur at the same time. For application-specific customer solutions, however, the agreement with the customer may provide for billing terms which differ from revenue recognition criteria, resulting in either deferred revenue or unbilled revenue. Credit assessments are performed to determine payment terms, which vary by region, industry, and customer. Prepayment terms result in contract liabilities for customer deposits. When credit is granted to customers, payment is typically due 30 to 90 days from billing. The Company's contracts have an original expected duration of less than one year, and therefore as a practical expedient, the Company has elected to ignore the impact of the time value of money on a contract and to expense sales commissions. The Company recognizes an asset for costs to fulfill a contract if the costs relate directly to the contract and to future performance, and the costs are expected to be recovered. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Management exercises judgment when determining the amount of revenue to be recognized each period. Such judgments include, but are not limited to, assessing the customer&#x2019;s ability and intention to pay substantially all of the contract consideration when due, determining when two or more contracts should be combined and accounted for as a single contract, determining whether a contract modification has occurred, assessing whether promises are immaterial in the context of the contract, determining whether material promises in a contract represent distinct performance obligations, estimating the transaction price for a contract that contains variable consideration, determining the stand-alone selling price of each performance obligation, determining whether control is transferred over time or at a point in time for performance obligations, and assessing whether formal customer acceptance provisions are substantive.&lt;/span&gt;&lt;/div&gt;</us-gaap:RevenueRecognitionPolicyTextBlock>
    <cgnx:RevenuePaymentTerms
      contextRef="i258063d49d9b48f296f8e28b9d01a914_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMjU1NDg_7da7b860-ec25-4880-b46f-e89ea06213f7">P30D</cgnx:RevenuePaymentTerms>
    <cgnx:RevenuePaymentTerms
      contextRef="i2bdea3feb5ee4e4395116243f2bbd0f8_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMjU1NTQ_239f2b9c-9f21-4dd7-bbaa-d260cd566682">P90D</cgnx:RevenuePaymentTerms>
    <us-gaap:ResearchDevelopmentAndComputerSoftwarePolicyTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDExOTg_e2f841f3-4fa2-48f4-a42f-0f5fbe995744">Research and DevelopmentResearch and development costs primarily include personnel-related costs, prototyping materials, and outside services. Research and development costs are expensed when incurred until technological feasibility has been established for the product. Thereafter, all software costs may be capitalized until the product is available for general release to customers. The Company determines technological feasibility at the time the product reaches beta in its stage of development. Historically, the time incurred between beta and general release to customers has been short, and therefore, the costs have been insignificant.</us-gaap:ResearchDevelopmentAndComputerSoftwarePolicyTextBlock>
    <us-gaap:AdvertisingCostsPolicyTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDEyOTM_0e92433c-7a40-416e-95d7-b4b32f164b19">&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Advertising Costs&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Advertising costs are expensed as incurred and totaled $1,965,000 in 2021, $1,443,000 in 2020, and $1,385,000 in 2019.&lt;/span&gt;&lt;/div&gt;</us-gaap:AdvertisingCostsPolicyTextBlock>
    <us-gaap:AdvertisingExpense
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMjc2NDA_af6899b7-cc2e-48b9-999b-e9f00c922f62"
      unitRef="usd">1965000</us-gaap:AdvertisingExpense>
    <us-gaap:AdvertisingExpense
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMjc2NTA_b27be2e8-b1fa-4fdd-90bc-53cb1eea09b9"
      unitRef="usd">1443000</us-gaap:AdvertisingExpense>
    <us-gaap:AdvertisingExpense
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMjc2NjQ_8c970d1e-a17d-442c-8a2f-815111214a58"
      unitRef="usd">1385000</us-gaap:AdvertisingExpense>
    <us-gaap:ShareBasedCompensationOptionAndIncentivePlansPolicy
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDExNDU_841f31f5-1149-4e78-9978-9a9f204168bd">&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Stock-Based Compensation&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company&#x2019;s stock-based awards that result in compensation expense consist of stock options and restricted stock units (RSUs). The Company has reserved a specific number of shares of its authorized but unissued shares for issuance upon the exercise of stock options or the settlement of RSUs. When a stock option is exercised or an RSU is settled, the Company issues new shares from this pool. The fair values of stock options are estimated on the grant date using a binomial lattice model. Management is responsible for determining the appropriate valuation model and estimating these fair values, and in doing so, considers a number of factors, including information provided by an outside valuation advisor and the observable market price of the Company's common stock on the grant date. The fair value of RSUs is determined based on the observable market price of the Company's common stock on the grant date less the present value of expected future dividends. When determining the grant-date fair value of stock-based awards, management further considers whether an adjustment is required to the observable market price or volatility of the Company's common stock that is used in the valuation as a result of material non-public information, if that information is expected to result in a material increase in share price.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company recognizes compensation expense related to stock-based awards using the graded attribution method, in which expense is recognized on a straight-line basis over the service period for each separately vesting &lt;/span&gt;&lt;/div&gt;portion of the stock option or RSU as if the award was, in substance, multiple awards. The amount of compensation expense recognized at the end of the vesting period is based on the number of awards for which the requisite service has been completed. No compensation expense is recognized for awards that are forfeited for which the employee does not render the requisite service. The term &#x201c;forfeitures&#x201d; is distinct from &#x201c;expirations&#x201d; and represents only the unvested portion of the surrendered award. The Company applies estimated forfeiture rates to its unvested awards to arrive at the amount of compensation expense that is expected to be recognized over the requisite service period. At the end of each separately vesting portion of an award, the expense that was recognized by applying the estimated forfeiture rate is compared to the expense that should be recognized based on the employee&#x2019;s service, and an increase or decrease to compensation expense is recorded to true up the final expense.</us-gaap:ShareBasedCompensationOptionAndIncentivePlansPolicy>
    <us-gaap:IncomeTaxPolicyTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDEyNDM_fd9733c2-029b-43c7-83dc-adf21a465c94">&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Taxes&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company recognizes a tax position in its financial statements when that tax position, based solely upon its technical merits, is more likely than not to be sustained upon examination by the relevant taxing authority. Those tax positions failing to qualify for initial recognition are recognized in the first interim period in which they meet the more likely than not standard, or are resolved through negotiation or litigation with the taxing authority, or upon expiration of the statutes of limitations. Derecognition of a tax position that was previously recognized occurs when an entity subsequently determines that a tax position no longer meets the more likely than not threshold of being sustained.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Only the portion of the liability that is expected to be paid within one year is classified as a current liability. As a result, liabilities expected to be resolved without the payment of cash (e.g., resolution due to the expiration of the statutes of limitations) or are not expected to be paid within one year are not classified as current. It is the Company&#x2019;s policy to record estimated interest and penalties as income tax expense and tax credits as a reduction in income tax expense.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Deferred tax assets and liabilities are determined based on the differences between the financial statement and tax bases of assets and liabilities as measured by the enacted tax rates that will be in effect when these differences reverse. Valuation allowances are provided if, based on the weight of available evidence, it is more likely than not that some or all of the deferred tax assets will not be realized.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Tax Cuts and Jobs Act of 2017 imposed a minimum tax on foreign earnings related to intangible assets, known as the Global Intangible Low-Taxed Income (GILTI) tax. In 2019, the Company elected to account for the impact of the GILTI minimum tax in deferred taxes, a change from the Company&#x2019;s initial election made in 2018 whereby the GILTI minimum tax was included in income tax expense as incurred on an annual basis. The change is considered preferable, as it appropriately matches the Company&#x2019;s current and deferred income tax implications.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Sales tax in the United States and similar taxes in other jurisdictions that are collected from customers and remitted to government authorities are presented on a gross basis (i.e., a receivable from the customer with a corresponding payable to the government). Amounts collected from customers and retained by the Company during tax holidays are recognized as non-operating income when earned.&lt;/span&gt;&lt;/div&gt;</us-gaap:IncomeTaxPolicyTextBlock>
    <us-gaap:EarningsPerSharePolicyTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDExNzA_81793403-2f29-4898-9a2b-467108a6964d">&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Net Income Per Share&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Basic net income per share is computed by dividing net income available to common shareholders by the weighted-average number of common shares outstanding for the period. Diluted net income per share is computed by dividing net income available to common shareholders by the weighted-average number of common shares outstanding for the period plus potential dilutive common shares. Dilutive common equivalent shares consist of stock options and restricted stock units and are calculated using the treasury stock method. Common equivalent shares do not qualify as participating securities. In periods where the Company records a net loss, potential common stock equivalents are not included in the calculation of diluted net loss per share as their effect would be anti-dilutive.&lt;/span&gt;&lt;/div&gt;</us-gaap:EarningsPerSharePolicyTextBlock>
    <us-gaap:ComprehensiveIncomePolicyPolicyTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDEyODU_b1836693-5c68-4431-bdda-4c544449ae87">&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Comprehensive Income&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Comprehensive income is defined as the change in equity of a company during a period from transactions and other events and circumstances, excluding transactions resulting from investments by owners and distributions to owners. Accumulated other comprehensive loss, net of tax, consists of foreign currency translation adjustment losses of $43,665,000 and $36,912,000, as of December 31, 2021 and December 31, 2020, respectively; net unrealized losses on available-for-sale investments of $3,006,000 as of December 31, 2021, and net unrealized gains on available-for-sale investments of $4,382,000 as of December 31, 2020; and losses on currency swaps, net of gains on long-term intercompany loans of $1,271,000 at each year end.&lt;/span&gt;&lt;/div&gt;Amounts reclassified from accumulated other comprehensive loss, net of tax, to investment income on the Consolidated Statements of Operations were net realized gains of $236,000, $4,119,000, and $1,452,000 for 2021, 2020, and 2019, respectively.</us-gaap:ComprehensiveIncomePolicyPolicyTextBlock>
    <us-gaap:AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMzM0NzE_9c9bf77a-d596-4384-afb6-e7c1ad2f0aa9"
      unitRef="usd">43665000</us-gaap:AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax>
    <us-gaap:AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMzM0Nzg_46f3a51e-99dc-498e-b05d-fc5f180416ab"
      unitRef="usd">36912000</us-gaap:AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax>
    <us-gaap:AccumulatedOtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMzM1OTc_4dd4a6cd-fb74-45c2-988c-e7f4fb40199f"
      unitRef="usd">3006000</us-gaap:AccumulatedOtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax>
    <us-gaap:AccumulatedOtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMzM2MDQ_44b370e2-aa0a-4ede-9d7c-24fa63830c99"
      unitRef="usd">4382000</us-gaap:AccumulatedOtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax>
    <us-gaap:AdjustmentForLongTermIntercompanyTransactionsNetOfTax
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMzM3NDY_d4b45a54-80b8-4114-8de7-471f0a78de42"
      unitRef="usd">1271000</us-gaap:AdjustmentForLongTermIntercompanyTransactionsNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
      contextRef="ia081105dd8bd4aaaa1265cbf9c24acc2_D20210101-20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMzM5MzI_8f2f17b3-8683-4362-80af-a417feee6468"
      unitRef="usd">236000</us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
      contextRef="i8c44a3dba82a42458c156905bedae3bf_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMzM5MzY_af919498-2de1-4b0d-b9b1-125cfc5720d3"
      unitRef="usd">4119000</us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
      contextRef="i11575d448348449484334a63f5c382ec_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMzM5NDQ_a300473a-0c18-4c6d-9807-d6c13674da6f"
      unitRef="usd">1452000</us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax>
    <cgnx:ConcentrationsOfRiskPolicyPolicyTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDEyNDA_45b173c8-d310-4580-93a9-fe0ae4b0222e">&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Concentrations of Risk&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Financial instruments that potentially subject the Company to concentrations of credit risk consist primarily of cash, cash equivalents, investments, and accounts receivable. The Company has certain domestic and foreign cash balances that exceed the insured limits set by the Federal Deposit Insurance Corporation (FDIC) in the United States and equivalent regulatory agencies in foreign countries. The Company primarily invests in investment-grade debt securities and has established guidelines relative to credit ratings, diversification, and maturities of its debt securities that maintain safety and liquidity. The Company has historically not experienced any significant realized losses on its debt securities.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;A single customer accounted for 17% of total revenue in 2021 and 15% of total accounts receivable as of December 31, 2021. Accounts receivable from a second customer accounted for 11% of total accounts receivable as of December 31, 2021. The Company performs ongoing credit evaluations of its customers and maintains allowances for potential credit losses. The Company has historically not experienced any significant losses related to the collection of its accounts receivable.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;A significant portion of the Company's products is presently manufactured by a third-party contractor located in Indonesia. This contract manufacturer has agreed to provide the Company with termination notification periods and last-time-buy rights, if and when that may be applicable. Our contract manufacturer's challenges in obtaining components and maintaining production have resulted in delays, and may continue to result in delays, in meeting our delivery schedules that, as a result, delay deliveries to our customers past their requested delivery date. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Certain key electronic and mechanical components, such as integrated circuit chips, are fundamental to the design of Cognex products. Due to the impact of the COVID-19 pandemic or other factors, we have experienced, and may continue to experience, disruptions to the supply of components for our products that have resulted, and may continue to result, in higher purchase costs, delivery costs, and manufacturing delays.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company sources components from preferred vendors that are selected based on price and performance considerations. In the event of a supply disruption from a preferred vendor, these components may typically be purchased from alternative vendors, which may result in higher purchase costs and manufacturing delays based on the time required to identify and obtain sufficient quantities from an alternative source.&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:12pt;font-weight:400;line-height:120%"&gt; &lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Certain of the Company&#x2019;s products utilize components that are available from only one source. If we are unable to secure adequate supply from these sources, we may have to redesign our products, which may lead to higher costs, delays in manufacturing, and possible loss of sales.&lt;/span&gt;&lt;/div&gt;</cgnx:ConcentrationsOfRiskPolicyPolicyTextBlock>
    <us-gaap:BusinessCombinationsPolicy
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDExNDc_006eea2e-4221-4544-b34d-9cfd0027f057">Business AcquisitionsThe Company determines whether a transaction qualifies as a business combination by applying the definition of a business, which requires the assets acquired and liabilities assumed to be inputs and processes that have the ability to contribute to the creation of outputs. The Company accounts for business combinations under the acquisition method of accounting, which requires the following steps: (1) identifying the acquirer, (2) determining the acquisition date, (3) recognizing and measuring the identifiable assets acquired and the liabilities assumed, and (4) recognizing and measuring goodwill. The Company measures the identifiable assets acquired and liabilities assumed at their estimated fair values as of the acquisition date. Management is responsible for determining the appropriate valuation model and estimated fair values, and in doing so, considers a number of factors, including information provided by an outside valuation advisor. Management primarily establishes fair value using the income approach based on a discounted cash flow model. The income approach requires the use of many assumptions and estimates including future revenues and expenses, as well as discount factors. Contingent consideration liabilities are reported at their estimated fair values based on probability-adjusted present values of the consideration expected to be paid, using significant inputs and estimates. Key assumptions used in these estimates include probability assessments with respect to the likelihood of achieving certain milestones and discount rates consistent with the level of risk of achievement. The fair values of these contingent consideration liabilities are remeasured each reporting period with changes in fair value included in "Other income (expense)" on the Consolidated Statements of Operations. Goodwill is recognized as of the acquisition date as the excess of the consideration transferred over the net amount of assets acquired and liabilities assumed. Transaction costs are expensed as incurred.</us-gaap:BusinessCombinationsPolicy>
    <us-gaap:CostsAssociatedWithExitOrDisposalActivitiesOrRestructuringsPolicy
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDExNTc_3d628cf2-62d7-4d03-a0b3-09a2a20dcc78">&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Restructuring Charges&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;One-time employee termination benefits as part of a restructuring activity exist at the date the plan of termination has been communicated to employees (the &#x201c;communication date&#x201d;) and meets all of the following criteria: (1) management, having the authority to approve the action, has committed to the plan of termination, (2) the plan identifies the number of employees to be terminated, their job classifications or functions and their locations, and the expected completion date, (3) the plan establishes the terms of the benefit arrangement in sufficient detail, and (4) actions required to complete the plan indicate it is unlikely that significant changes to the plan will be made. If employees are not required to render service until they are terminated in order to receive the termination benefits or will not be retained to render service beyond a minimum retention period, a liability for the termination benefits is recognized and measured at fair value at the communication date. Otherwise, a liability is measured initially at the communication date based on the fair value of the liability as of the termination date and recognized ratably over the future service period. Changes to the fair value of the liability are recorded as restructuring adjustments. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Closures of leased offices as part of a restructuring activity prior to the end of the contractual lease term are treated as abandoned right-to-use assets when the Company ceases to use the property for economic benefit and lacks either the intent or ability to sublease. The lease asset is written down to zero as of the abandonment date. Estimates of contract termination costs assume the Company will be obligated to pay the remaining rent over the contract period, and the lease liability continues to be recorded on the balance sheet. Subsequent negotiations that result in early contract terminations are recorded as favorable restructuring adjustments.&lt;/span&gt;&lt;/div&gt;Other associated costs as part of a restructuring activity include costs to consolidate facilities, costs to relocate employees, and legal fees incurred to research local statutory requirements and prepare termination agreements. These costs are recognized in the period in which the liability is incurred, which generally corresponds to the period in which the services are rendered.</us-gaap:CostsAssociatedWithExitOrDisposalActivitiesOrRestructuringsPolicy>
    <us-gaap:NewAccountingPronouncementsPolicyPolicyTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDMvZnJhZzpmNzQ4MDI0NDk3MTU0OTI1YTM5ZDhjZDQxNDM1Y2E0MC90ZXh0cmVnaW9uOmY3NDgwMjQ0OTcxNTQ5MjVhMzlkOGNkNDE0MzVjYTQwXzUyODU_b2a7d890-c79b-4ead-b6b9-465408872df6">New Pronouncements&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Accounting Standards Update (ASU) 2019-12, "Simplifying the Accounting for Income Taxes"&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The amendments in this ASU eliminate certain exceptions related to the approach for intraperiod tax allocation, the methodology for calculating income taxes in an interim period, and the recognition of deferred tax liabilities for outside basis differences. They also clarify and simplify other aspects of the accounting for income taxes. The Company adopted ASU 2019-12 on January 1, 2021. Upon adoption, ASU 2019-12 did not have a material impact on the Company's consolidated financial statements and disclosures.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Accounting Standards Update (ASU) 2020-08, "Codification Improvements to Subtopic 310-20, Receivables - Nonrefundable Fees and Other Costs"&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The amendments in this ASU clarify that for each reporting period, for callable debt with multiple call dates and call prices that may change at each call date, to the extent that the amortized cost basis of an individual callable debt security exceeds the amount repayable by the issuer at the next call date, the excess is amortized to the next call date. The Company adopted ASU 2020-08 on January 1, 2021. Upon adoption, ASU 2020-08 did not have a material impact on the Company's consolidated financial statements and disclosures.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Accounting Standards Update (ASU) 2020-04, "Reference Rate Reform (Topic 848): Facilitation of the Effects of Reference Rate Reform on Financial Reporting" and (ASU) 2021-01, "Reference Rate Reform (Topic 848): Scope"&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The amendments in these ASUs apply to all entities that have contracts, hedging relationships, and other transactions that reference LIBOR or another reference rate expected to be discontinued because of reference rate reform. Together, the ASUs provide optional expedients and exceptions for applying generally accepted accounting principles (GAAP) to contracts, hedging relationships, and other transactions affected by reference rate reform if certain criteria are met. The expedients and exceptions provided by the amendments do not apply to contract modifications made and hedging relationships entered into or evaluated after December 31, 2022, except for hedging relationships existing as of December 31, 2022 that an entity has elected certain optional expedients for and that are retained through the end of the hedging relationship. The amendments in these ASUs are effective for all entities as of March 12, 2020 through December 31, 2022. Management does not expect ASU 2020-04 or ASU 2021-01 to have a material impact on the Company's consolidated financial statements and disclosures.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Accounting Standards Update (ASU) 2021-08, "Business Combinations (Topic 805): Accounting for Contract Assets and Contract Liabilities from Contracts with Customers"&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The amendments in this ASU primarily address the accounting for contract assets and contract liabilities related to revenue contracts with customers in a business combination. The ASU clarifies that an acquirer should account for the related revenue contracts in accordance with Accounting Standards Codification 606 as if the acquirer had originated the contracts. The amendments in this ASU are effective for fiscal years beginning after December 15, 2022, including interim periods within those fiscal years, although early adoption is permitted. The amendments in the ASU should be applied prospectively to business combinations occurring on or after the effective date of the amendments. The expected financial statement impact of this new accounting standard cannot be reasonably estimated at this time, as the impact in future periods will depend on the contract assets and contract liabilities acquired in future business combinations. Management does not expect this ASU to have a material impact on the Company's disclosures.&lt;/span&gt;&lt;/div&gt;</us-gaap:NewAccountingPronouncementsPolicyPolicyTextBlock>
    <us-gaap:NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDMvZnJhZzpmNzQ4MDI0NDk3MTU0OTI1YTM5ZDhjZDQxNDM1Y2E0MC90ZXh0cmVnaW9uOmY3NDgwMjQ0OTcxNTQ5MjVhMzlkOGNkNDE0MzVjYTQwXzUyODc_289363b3-7e29-4e39-b5a2-9d15f609ff0f">New Pronouncements&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Accounting Standards Update (ASU) 2019-12, "Simplifying the Accounting for Income Taxes"&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The amendments in this ASU eliminate certain exceptions related to the approach for intraperiod tax allocation, the methodology for calculating income taxes in an interim period, and the recognition of deferred tax liabilities for outside basis differences. They also clarify and simplify other aspects of the accounting for income taxes. The Company adopted ASU 2019-12 on January 1, 2021. Upon adoption, ASU 2019-12 did not have a material impact on the Company's consolidated financial statements and disclosures.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Accounting Standards Update (ASU) 2020-08, "Codification Improvements to Subtopic 310-20, Receivables - Nonrefundable Fees and Other Costs"&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The amendments in this ASU clarify that for each reporting period, for callable debt with multiple call dates and call prices that may change at each call date, to the extent that the amortized cost basis of an individual callable debt security exceeds the amount repayable by the issuer at the next call date, the excess is amortized to the next call date. The Company adopted ASU 2020-08 on January 1, 2021. Upon adoption, ASU 2020-08 did not have a material impact on the Company's consolidated financial statements and disclosures.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Accounting Standards Update (ASU) 2020-04, "Reference Rate Reform (Topic 848): Facilitation of the Effects of Reference Rate Reform on Financial Reporting" and (ASU) 2021-01, "Reference Rate Reform (Topic 848): Scope"&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The amendments in these ASUs apply to all entities that have contracts, hedging relationships, and other transactions that reference LIBOR or another reference rate expected to be discontinued because of reference rate reform. Together, the ASUs provide optional expedients and exceptions for applying generally accepted accounting principles (GAAP) to contracts, hedging relationships, and other transactions affected by reference rate reform if certain criteria are met. The expedients and exceptions provided by the amendments do not apply to contract modifications made and hedging relationships entered into or evaluated after December 31, 2022, except for hedging relationships existing as of December 31, 2022 that an entity has elected certain optional expedients for and that are retained through the end of the hedging relationship. The amendments in these ASUs are effective for all entities as of March 12, 2020 through December 31, 2022. Management does not expect ASU 2020-04 or ASU 2021-01 to have a material impact on the Company's consolidated financial statements and disclosures.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Accounting Standards Update (ASU) 2021-08, "Business Combinations (Topic 805): Accounting for Contract Assets and Contract Liabilities from Contracts with Customers"&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The amendments in this ASU primarily address the accounting for contract assets and contract liabilities related to revenue contracts with customers in a business combination. The ASU clarifies that an acquirer should account for the related revenue contracts in accordance with Accounting Standards Codification 606 as if the acquirer had originated the contracts. The amendments in this ASU are effective for fiscal years beginning after December 15, 2022, including interim periods within those fiscal years, although early adoption is permitted. The amendments in the ASU should be applied prospectively to business combinations occurring on or after the effective date of the amendments. The expected financial statement impact of this new accounting standard cannot be reasonably estimated at this time, as the impact in future periods will depend on the contract assets and contract liabilities acquired in future business combinations. Management does not expect this ASU to have a material impact on the Company's disclosures.&lt;/span&gt;&lt;/div&gt;</us-gaap:NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock>
    <us-gaap:FairValueDisclosuresTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90ZXh0cmVnaW9uOjMxYTJmMjVhMDA4YjQ2YjI5YjVhYTdlNThkZmE1OThiXzM5MjY_584d2dca-b571-47ff-9573-37d5ac6d1da6">Fair Value Measurements&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Financial Assets and Liabilities that are Measured at Fair Value on a Recurring Basis&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the financial assets and liabilities measured at fair value on a recurring basis as of December&#160;31, 2021 (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:10pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:93.421%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:50.386%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.549%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.582%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.549%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.582%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.552%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Quoted&#160;Prices&#160;in&lt;br/&gt;Active Markets&lt;br/&gt;for Identical&lt;br/&gt;Assets (Level&#160;1)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Significant&#160;Other&lt;br/&gt;Observable&lt;br/&gt;Inputs (Level&#160;2)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Unobservable Inputs                       (Level 3)&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Assets:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Money market instruments&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;537&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Corporate bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;554,306&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Asset-backed securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;81,595&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Treasury bills&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;58,665&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Agency bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;18,879&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Municipal bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,639&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Sovereign bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,119&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Economic hedge forward contracts&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;39&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Liabilities:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Economic hedge forward contracts&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;230&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company&#x2019;s money market instruments are reported at fair value based on the daily market price for identical assets in active markets, and are therefore classified as Level 1. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company&#x2019;s debt securities and forward contracts are reported at fair value based on model-driven valuations in which all significant inputs are observable or can be derived from or corroborated by observable market data for substantially the full term of the asset or liability, and are therefore classified as Level 2. Management is responsible for estimating the fair value of these financial assets and liabilities, and in doing so, considers valuations provided by a large, third-party pricing service. For debt securities, this service maintains regular contact with market makers, brokers, dealers, and analysts to gather information on market movement, direction, trends, and other specific data. They use this information to structure yield curves for various types of debt securities and arrive at the daily valuations. The Company's forward contracts are typically traded or executed in over-the-counter markets with a high degree of pricing transparency. The market participants are generally large commercial banks.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company's contingent consideration liabilities are reported at fair value based on probability-adjusted present values of the consideration expected to be paid using significant inputs that are not observable in the market, and are therefore classified as Level 3. Key assumptions used in these estimates include probability assessments with respect to the likelihood of achieving certain revenue milestones. The fair values of these contingent consideration liabilities were calculated using discount rates consistent with the level of risk of achievement, and are remeasured each reporting period.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the activity for the Company's liabilities measured at fair value using Level 3 inputs (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:11pt;text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:85.303%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.497%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2019&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,153&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Fair value adjustment to Chiaro contingent consideration&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(114)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Payment of Chiaro contingent consideration&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1,039)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The fair value of the contingent consideration liability related to the Company's acquisition of GVi Ventures, Inc. in 2017 was written down to zero in 2019 resulting from a lower level of revenue in the Americas' automotive industry, and the balance remains at zero as of December 31, 2021. The undiscounted potential outcomes related to future contingent consideration range from $0 to $2,500,000 based on certain revenue levels through April of 2022. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Non-financial Assets that are Measured at Fair Value on a Non-recurring Basis&lt;/span&gt;&lt;/div&gt;Non-financial assets, such as property, plant and equipment, operating lease assets, goodwill, and intangible assets, are required to be measured at fair value only when an impairment loss is recognized. The Company evaluates these long-lived assets for impairment whenever events or changes in circumstances, referred to as "triggering events," indicate the carrying value may not be recoverable. The adverse impact of the COVID-19 pandemic on our business in 2020 triggered a review of long-lived assets for potential impairment as of May 26, 2020, which resulted in operating lease asset impairment charges of $3,427,000 (refer to Notes 7 and 22) that were included in "Restructuring charges" on the Consolidated Statements of Operations, and intangible asset impairment charges of $19,571,000 (refer to Note 9) in the second quarter of 2020. These fair value measurements were based on the present values of future cash flows using significant inputs that are not observable in the market, and were therefore classified as Level 3. The Company did not record impairment charges related to non-financial assets in 2021 or 2019.</us-gaap:FairValueDisclosuresTextBlock>
    <us-gaap:ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90ZXh0cmVnaW9uOjMxYTJmMjVhMDA4YjQ2YjI5YjVhYTdlNThkZmE1OThiXzM5MzY_89f5bc36-39ed-4184-8f6d-fcc3d2ebdfe8">&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the financial assets and liabilities measured at fair value on a recurring basis as of December&#160;31, 2021 (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:10pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:93.421%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:50.386%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.549%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.582%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.549%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.582%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.552%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Quoted&#160;Prices&#160;in&lt;br/&gt;Active Markets&lt;br/&gt;for Identical&lt;br/&gt;Assets (Level&#160;1)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Significant&#160;Other&lt;br/&gt;Observable&lt;br/&gt;Inputs (Level&#160;2)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Unobservable Inputs                       (Level 3)&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Assets:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Money market instruments&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;537&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Corporate bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;554,306&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Asset-backed securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;81,595&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Treasury bills&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;58,665&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Agency bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;18,879&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Municipal bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,639&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Sovereign bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,119&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Economic hedge forward contracts&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;39&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Liabilities:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Economic hedge forward contracts&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;230&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock>
    <cgnx:MoneyMarketInstrumentsFairValueDisclosure
      contextRef="ib0c023c21ea94cfda67a9aed5e4824e6_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzMtMS0xLTEtMjg4MDU_4d8b809e-afd5-49fd-93ed-fffa917a2512"
      unitRef="usd">537000</cgnx:MoneyMarketInstrumentsFairValueDisclosure>
    <cgnx:MoneyMarketInstrumentsFairValueDisclosure
      contextRef="i596d75bc930d4fa195d274ceea0712fa_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzMtMy0xLTEtMjg4MDU_9a5a0eab-31b1-4816-bbf6-9faf2e8a9e76"
      unitRef="usd">0</cgnx:MoneyMarketInstrumentsFairValueDisclosure>
    <cgnx:MoneyMarketInstrumentsFairValueDisclosure
      contextRef="i18231fa7d3004cc8abb3dccaed931dfe_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzMtNS0xLTEtMjg4MDU_f3201f3c-680a-4a4a-bf03-36bbb1d80da7"
      unitRef="usd">0</cgnx:MoneyMarketInstrumentsFairValueDisclosure>
    <cgnx:CorporateBondsFairValueDisclosure
      contextRef="ib0c023c21ea94cfda67a9aed5e4824e6_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzQtMS0xLTEtMjg4MDU_381d1683-db2c-46eb-ba21-62ca7b02109d"
      unitRef="usd">0</cgnx:CorporateBondsFairValueDisclosure>
    <cgnx:CorporateBondsFairValueDisclosure
      contextRef="i596d75bc930d4fa195d274ceea0712fa_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzQtMy0xLTEtMjg4MDU_0a105753-0490-4e1c-a932-2453c4ef110a"
      unitRef="usd">554306000</cgnx:CorporateBondsFairValueDisclosure>
    <cgnx:CorporateBondsFairValueDisclosure
      contextRef="i18231fa7d3004cc8abb3dccaed931dfe_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzQtNS0xLTEtMjg4MDU_56aa9db1-a93e-4d5e-93d0-b8af6b6488a8"
      unitRef="usd">0</cgnx:CorporateBondsFairValueDisclosure>
    <cgnx:AssetBackedSecuritiesFairValueDisclosure
      contextRef="ib0c023c21ea94cfda67a9aed5e4824e6_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzUtMS0xLTEtMzM4NzY_81204fa0-9e2a-4dde-b37e-e1cb373bde67"
      unitRef="usd">0</cgnx:AssetBackedSecuritiesFairValueDisclosure>
    <cgnx:AssetBackedSecuritiesFairValueDisclosure
      contextRef="i596d75bc930d4fa195d274ceea0712fa_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzUtMy0xLTEtMzM4NzY_224016f1-e86d-43a4-848b-d23e6130c923"
      unitRef="usd">81595000</cgnx:AssetBackedSecuritiesFairValueDisclosure>
    <cgnx:AssetBackedSecuritiesFairValueDisclosure
      contextRef="i18231fa7d3004cc8abb3dccaed931dfe_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzUtNS0xLTEtMzM4NzY_26d2a189-e016-41f2-9808-7eb5a5105bc1"
      unitRef="usd">0</cgnx:AssetBackedSecuritiesFairValueDisclosure>
    <cgnx:TreasuryBillsFairValueDisclosure
      contextRef="ib0c023c21ea94cfda67a9aed5e4824e6_I20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzUtMS0xLTEtMjg4MDU_e0c8a484-d89b-48ed-aa2f-48da3db5ab72"
      unitRef="usd"
      xsi:nil="true"/>
    <cgnx:TreasuryBillsFairValueDisclosure
      contextRef="i596d75bc930d4fa195d274ceea0712fa_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzUtMy0xLTEtMjg4MDU_543fef45-f140-4a55-9789-3d8f63fc6bbd"
      unitRef="usd">58665000</cgnx:TreasuryBillsFairValueDisclosure>
    <cgnx:TreasuryBillsFairValueDisclosure
      contextRef="ib0c023c21ea94cfda67a9aed5e4824e6_I20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzUtNC0xLTEtMjg4MDU_3b960cea-462f-4773-b7ef-bf27cf9c96ba"
      unitRef="usd"
      xsi:nil="true"/>
    <cgnx:TreasuryBillsFairValueDisclosure
      contextRef="i18231fa7d3004cc8abb3dccaed931dfe_I20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzUtNS0xLTEtMjg4MDU_9fce6006-aaf3-4276-a482-c6d7cb6d3232"
      unitRef="usd"
      xsi:nil="true"/>
    <cgnx:AgencyBondsFairValueDisclosure
      contextRef="ib0c023c21ea94cfda67a9aed5e4824e6_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzgtMS0xLTEtMjg4MDU_08b49866-b262-4359-90dd-ab7d4ffba5ed"
      unitRef="usd">0</cgnx:AgencyBondsFairValueDisclosure>
    <cgnx:AgencyBondsFairValueDisclosure
      contextRef="i596d75bc930d4fa195d274ceea0712fa_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzgtMy0xLTEtMjg4MDU_0006b433-cec8-4713-89a6-f66f6930b667"
      unitRef="usd">18879000</cgnx:AgencyBondsFairValueDisclosure>
    <cgnx:AgencyBondsFairValueDisclosure
      contextRef="i18231fa7d3004cc8abb3dccaed931dfe_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzgtNS0xLTEtMjg4MDU_90dec2f9-8c0e-4bc7-bf7c-d31eb3dad849"
      unitRef="usd">0</cgnx:AgencyBondsFairValueDisclosure>
    <cgnx:MunicipalBondsFairValueDisclosure
      contextRef="ib0c023c21ea94cfda67a9aed5e4824e6_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzktMS0xLTEtMzQxNjk_688a8752-50fa-4192-8ce1-6416064325a1"
      unitRef="usd">0</cgnx:MunicipalBondsFairValueDisclosure>
    <cgnx:MunicipalBondsFairValueDisclosure
      contextRef="i596d75bc930d4fa195d274ceea0712fa_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzktMy0xLTEtMzQxNjk_1c85d034-dc24-4e46-b6db-d72d11fa6384"
      unitRef="usd">5639000</cgnx:MunicipalBondsFairValueDisclosure>
    <cgnx:MunicipalBondsFairValueDisclosure
      contextRef="i18231fa7d3004cc8abb3dccaed931dfe_I20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzktNS0xLTEtMzQxNjk_3df4ce89-76e5-4ab4-ae06-5c6404864766"
      unitRef="usd"
      xsi:nil="true"/>
    <cgnx:SovereignBondsFairValueDisclosure
      contextRef="ib0c023c21ea94cfda67a9aed5e4824e6_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzktMS0xLTEtMjg4MDU_bc50c8fd-999d-4276-8697-94abc3f8708a"
      unitRef="usd">0</cgnx:SovereignBondsFairValueDisclosure>
    <cgnx:SovereignBondsFairValueDisclosure
      contextRef="i596d75bc930d4fa195d274ceea0712fa_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzktMy0xLTEtMjg4MDU_e1e0c34a-7bed-4fb6-b8a1-4992be701ff7"
      unitRef="usd">2119000</cgnx:SovereignBondsFairValueDisclosure>
    <cgnx:SovereignBondsFairValueDisclosure
      contextRef="i18231fa7d3004cc8abb3dccaed931dfe_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzktNS0xLTEtMjg4MDU_944ad573-5cf4-48fe-8aa2-72899362e651"
      unitRef="usd">0</cgnx:SovereignBondsFairValueDisclosure>
    <us-gaap:ForeignCurrencyContractAssetFairValueDisclosure
      contextRef="ib0c023c21ea94cfda67a9aed5e4824e6_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzEzLTEtMS0xLTI4ODA1_4bd1c2d9-f7e2-4c8e-b4f7-34fb2032114e"
      unitRef="usd">0</us-gaap:ForeignCurrencyContractAssetFairValueDisclosure>
    <us-gaap:ForeignCurrencyContractAssetFairValueDisclosure
      contextRef="i596d75bc930d4fa195d274ceea0712fa_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzEzLTMtMS0xLTI4ODA1_3cadf306-3ea1-494f-8f0b-a62541522929"
      unitRef="usd">39000</us-gaap:ForeignCurrencyContractAssetFairValueDisclosure>
    <us-gaap:ForeignCurrencyContractAssetFairValueDisclosure
      contextRef="i18231fa7d3004cc8abb3dccaed931dfe_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzEzLTUtMS0xLTI4ODA1_53d641bf-597c-4e37-86f6-959cbd253cb9"
      unitRef="usd">0</us-gaap:ForeignCurrencyContractAssetFairValueDisclosure>
    <us-gaap:ForeignCurrencyContractsLiabilityFairValueDisclosure
      contextRef="ib0c023c21ea94cfda67a9aed5e4824e6_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzE2LTEtMS0xLTI4ODA1_8bd626b9-a162-4bc0-86fd-6c7422241016"
      unitRef="usd">0</us-gaap:ForeignCurrencyContractsLiabilityFairValueDisclosure>
    <us-gaap:ForeignCurrencyContractsLiabilityFairValueDisclosure
      contextRef="i596d75bc930d4fa195d274ceea0712fa_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzE2LTMtMS0xLTI4ODA1_42cff970-b437-42cf-a94b-83b9473d8117"
      unitRef="usd">230000</us-gaap:ForeignCurrencyContractsLiabilityFairValueDisclosure>
    <us-gaap:ForeignCurrencyContractsLiabilityFairValueDisclosure
      contextRef="i18231fa7d3004cc8abb3dccaed931dfe_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzE2LTUtMS0xLTI4ODA1_e7b85bab-e65a-40b2-a01d-4d2e5aa3bda2"
      unitRef="usd">0</us-gaap:ForeignCurrencyContractsLiabilityFairValueDisclosure>
    <us-gaap:FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90ZXh0cmVnaW9uOjMxYTJmMjVhMDA4YjQ2YjI5YjVhYTdlNThkZmE1OThiXzM5NDA_54cfd824-710e-46a1-9af6-47ddb95a520b">&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the activity for the Company's liabilities measured at fair value using Level 3 inputs (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:11pt;text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:85.303%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.497%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2019&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,153&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Fair value adjustment to Chiaro contingent consideration&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(114)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Payment of Chiaro contingent consideration&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1,039)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTextBlock>
    <us-gaap:FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
      contextRef="ia991b13c7b074439964a26d579235ee4_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTo3YWY1YmVjNzI3MWY0N2Q4OGNjNDc2YzFhYzRhNGQ0Zi90YWJsZXJhbmdlOjdhZjViZWM3MjcxZjQ3ZDg4Y2M0NzZjMWFjNGE0ZDRmXzAtMS0xLTEtMjg4MDU_cb723200-da00-4dea-a849-5bca4a35ab5e"
      unitRef="usd">1153000</us-gaap:FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue>
    <us-gaap:LiabilitiesFairValueAdjustment
      contextRef="icbe413b8380b4b74b96766d056cfe1be_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTo3YWY1YmVjNzI3MWY0N2Q4OGNjNDc2YzFhYzRhNGQ0Zi90YWJsZXJhbmdlOjdhZjViZWM3MjcxZjQ3ZDg4Y2M0NzZjMWFjNGE0ZDRmXzMtMS0xLTEtMjg4MDU_ff776ed7-15b7-4544-81b5-7e1fed8e467e"
      unitRef="usd">-114000</us-gaap:LiabilitiesFairValueAdjustment>
    <us-gaap:LiabilitiesFairValueAdjustment
      contextRef="i7916769b28254833942a005f3b6b3b20_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTo3YWY1YmVjNzI3MWY0N2Q4OGNjNDc2YzFhYzRhNGQ0Zi90YWJsZXJhbmdlOjdhZjViZWM3MjcxZjQ3ZDg4Y2M0NzZjMWFjNGE0ZDRmXzUtMS0xLTEtMjg4MDU_ecc4828f-2cd6-4979-8abb-150cf9b54181"
      unitRef="usd">-1039000</us-gaap:LiabilitiesFairValueAdjustment>
    <us-gaap:FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTo3YWY1YmVjNzI3MWY0N2Q4OGNjNDc2YzFhYzRhNGQ0Zi90YWJsZXJhbmdlOjdhZjViZWM3MjcxZjQ3ZDg4Y2M0NzZjMWFjNGE0ZDRmXzctMS0xLTEtMjg4MDU_6a77ff5f-ffb2-47f3-af04-66c071e48d7d"
      unitRef="usd">0</us-gaap:FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue>
    <us-gaap:FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTo3YWY1YmVjNzI3MWY0N2Q4OGNjNDc2YzFhYzRhNGQ0Zi90YWJsZXJhbmdlOjdhZjViZWM3MjcxZjQ3ZDg4Y2M0NzZjMWFjNGE0ZDRmXzEyLTEtMS0xLTI4ODA1_ba816db4-fec3-4892-b408-4bac1e262a7f"
      unitRef="usd">0</us-gaap:FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue>
    <us-gaap:FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
      contextRef="i1ba31dc29f6e4fd583635b026a78c70e_I20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90ZXh0cmVnaW9uOjMxYTJmMjVhMDA4YjQ2YjI5YjVhYTdlNThkZmE1OThiXzIzNzU_b6a24fb9-8489-4136-96b3-ac2a31674a5a"
      unitRef="usd">0</us-gaap:FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue>
    <us-gaap:FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
      contextRef="iff8191abdb834fa281b3e2476e14a7dc_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90ZXh0cmVnaW9uOjMxYTJmMjVhMDA4YjQ2YjI5YjVhYTdlNThkZmE1OThiXzI1MDg_ad7d19b1-14c8-4cc3-bba5-49be021eb3a1"
      unitRef="usd">0</us-gaap:FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue>
    <us-gaap:BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueLow
      contextRef="id9c74275ab59442fb9ded8deb5674d28_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90ZXh0cmVnaW9uOjMxYTJmMjVhMDA4YjQ2YjI5YjVhYTdlNThkZmE1OThiXzI2MjY_ea977ed5-ed25-415e-a900-0f85c538e717"
      unitRef="usd">0</us-gaap:BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueLow>
    <us-gaap:BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh
      contextRef="i7222cc20036644a3b44ea75faaa45733_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90ZXh0cmVnaW9uOjMxYTJmMjVhMDA4YjQ2YjI5YjVhYTdlNThkZmE1OThiXzI2MzI_db7e079a-2224-45ef-849a-6a479abf30c0"
      unitRef="usd">2500000</us-gaap:BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh>
    <us-gaap:OperatingLeaseImpairmentLoss
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90ZXh0cmVnaW9uOjMxYTJmMjVhMDA4YjQ2YjI5YjVhYTdlNThkZmE1OThiXzM0NjE_f1673ba8-4cf4-4c72-b243-5ddb7b8d9391"
      unitRef="usd">3427000</us-gaap:OperatingLeaseImpairmentLoss>
    <us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill
      contextRef="ib02ea70179e047879c445fd8d0e9275f_D20200330-20200628"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90ZXh0cmVnaW9uOjMxYTJmMjVhMDA4YjQ2YjI5YjVhYTdlNThkZmE1OThiXzM2MjQ_d118fa41-3893-44b4-8413-91dead33fcc1"
      unitRef="usd">19571000</us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill>
    <us-gaap:InvestmentsInDebtAndEquityInstrumentsCashAndCashEquivalentsUnrealizedAndRealizedGainsLossesTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90ZXh0cmVnaW9uOjg0NTBmMTM1MjVlNzRiZmE5NWI4OTU1N2YwYzExMzI0XzI0MjE_38351454-2f9f-4eb1-8a24-5a1fe91f10e3">Cash, Cash Equivalents, and Investments&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Cash, cash equivalents, and investments consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:65.175%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.322%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.470%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December&#160;31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Cash&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;185,624&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;266,609&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Money market instruments&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;537&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,464&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Cash and cash equivalents&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;186,161&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;269,073&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Corporate bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;73,088&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;32,714&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Asset-backed securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;37,655&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;25,160&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Treasury bills&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;18,912&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;35,403&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Municipal bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;4,998&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,303&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Agency bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;2,802&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Sovereign bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;8,660&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Current investments&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;137,455&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;103,240&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Corporate bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;481,218&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;203,428&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Asset-backed securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;43,940&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;67,058&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Treasury bills&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;39,753&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;96,458&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Agency bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;16,077&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;19,006&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Sovereign bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;2,119&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,440&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Municipal bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;641&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,735&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Non-current investments&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;583,748&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;395,125&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;907,364&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;767,438&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company&#x2019;s cash balance included foreign bank balances totaling $142,009,000 and $225,853,000 as of December&#160;31, 2021 and 2020, respectively.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Corporate bonds consist of debt securities issued by both domestic and foreign companies; asset-backed securities consist of debt securities collateralized by pools of receivables or loans with credit enhancement; treasury bills consist of debt securities issued by the U.S. government; municipal bonds consist of debt securities issued by state and local government entities; agency bonds consist of domestic or foreign obligations of government agencies and government-sponsored enterprises that have government backing; and sovereign bonds consist of direct debt issued by foreign governments. All of the Company's securities as of December 31, 2021 and 2020 were denominated in U.S. Dollars.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Accrued interest receivable is included in "Prepaid expenses and other current assets" on the Consolidated Balance Sheets and amounted to $3,037,000 and $1,560,000 as of December 31, 2021 and 2020, respectively.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the Company&#x2019;s available-for-sale investments as of December&#160;31, 2021 (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:36.583%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.002%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.709%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.002%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.005%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Amortized&lt;br/&gt;Cost&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Gross&lt;br/&gt;Unrealized&lt;br/&gt;Gains&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Gross&lt;br/&gt;Unrealized&lt;br/&gt;Losses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Fair Value&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Current:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Corporate bonds&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;72,863&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;251&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(26)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;73,088&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Asset-backed securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;37,568&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;112&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(25)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;37,655&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Treasury bills&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;18,864&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;51&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(3)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;18,912&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Municipal bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,029&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(32)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,998&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Agency bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,800&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,802&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Non-current:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Corporate bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;485,140&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;555&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(4,477)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;481,218&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Asset-backed securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;44,197&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;45&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(302)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;43,940&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Treasury bills&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;39,740&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;46&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(33)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;39,753&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Agency bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;16,128&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(51)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;16,077&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Sovereign bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,141&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(22)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,119&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Municipal bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;635&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;641&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;725,105&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;1,069&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(4,971)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;721,203&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the Company&#x2019;s gross unrealized losses and fair values for available-for-sale investments in an unrealized loss position as of December&#160;31, 2021 (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.561%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:34.289%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.032%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.032%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.032%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:8.885%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.032%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.328%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Unrealized Loss&lt;br/&gt;Position For Less than&lt;br/&gt;12 Months&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Unrealized Loss&lt;br/&gt;Position For Greater than&lt;br/&gt;12 Months&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Total&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Fair Value&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Unrealized&lt;br/&gt;Losses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Fair Value&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Unrealized&lt;br/&gt;Losses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Fair Value&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Unrealized&lt;br/&gt;Losses&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Corporate bonds&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;431,652&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(4,470)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,110&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(33)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;434,762&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(4,503)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Asset-backed securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;50,980&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(317)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;806&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(10)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;51,786&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(327)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Treasury bills&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;25,040&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(36)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;25,040&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(36)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Agency Bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;16,077&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(51)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;16,077&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(51)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Municipal bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,892&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(32)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,892&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(32)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Sovereign bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,119&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(22)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,119&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(22)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;525,868&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(4,896)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;7,808&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(75)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;533,676&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(4,971)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:115%"&gt;Management monitors debt securities that are in an unrealized loss position to determine whether a loss exists related to the credit quality of the issuer. When developing an estimate of expected credit losses, management considers all relevant information including historical experience, current conditions, and reasonable forecasts of expected future cash flows. Based on this evaluation, no allowance for credit losses on debt securities was recorded as of December 31, 2021.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes changes in the allowance for credit losses (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.415%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:79.341%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:18.459%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2019&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Increases to the allowance for credit losses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;160&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Decreases to the allowance for credit losses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(160)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:115%"&gt;The Company recorded gross realized gains on the sale of debt securities totaling $246,000 in 2021, $4,283,000 in 2020, and $1,581,000 in 2019, and gross realized losses on the sale of debt securities totaling $10,000 in 2021, $164,000 in 2020, and $129,000 in 2019.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the effective maturity dates of the Company&#x2019;s available-for-sale investments as of December&#160;31, 2021 (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.561%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:34.876%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.206%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.913%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:8.297%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:7.857%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:7.857%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.624%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;&amp;lt;1&#160;Year&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;1-2&#160;Years&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2-3&#160;Years&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;3-4&#160;Years&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;4-5&#160;Years&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Total&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Corporate bonds&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;73,088&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;205,331&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;175,992&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;64,356&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;35,539&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;554,306&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Asset-backed securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;37,655&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;23,370&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,668&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;8,092&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;7,810&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;81,595&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Treasury bills&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;18,912&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;39,753&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;58,665&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Agency bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,802&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;16,077&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;18,879&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Municipal bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,998&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;641&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,639&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Sovereign bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,052&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,067&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,119&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;137,455&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;285,172&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;181,712&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;73,515&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;43,349&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;721,203&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:InvestmentsInDebtAndEquityInstrumentsCashAndCashEquivalentsUnrealizedAndRealizedGainsLossesTextBlock>
    <cgnx:ComponentsOfCashCashEquivalentsAndInvestmentsTableTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90ZXh0cmVnaW9uOjg0NTBmMTM1MjVlNzRiZmE5NWI4OTU1N2YwYzExMzI0XzI0Mjk_2759fc2f-1792-42ff-9b4e-0c21eac9d0a4">&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Cash, cash equivalents, and investments consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:65.175%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.322%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.470%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December&#160;31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Cash&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;185,624&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;266,609&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Money market instruments&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;537&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,464&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Cash and cash equivalents&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;186,161&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;269,073&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Corporate bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;73,088&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;32,714&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Asset-backed securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;37,655&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;25,160&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Treasury bills&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;18,912&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;35,403&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Municipal bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;4,998&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,303&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Agency bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;2,802&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Sovereign bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;8,660&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Current investments&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;137,455&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;103,240&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Corporate bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;481,218&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;203,428&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Asset-backed securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;43,940&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;67,058&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Treasury bills&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;39,753&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;96,458&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Agency bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;16,077&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;19,006&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Sovereign bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;2,119&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,440&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Municipal bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;641&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,735&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Non-current investments&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;583,748&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;395,125&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;907,364&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;767,438&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</cgnx:ComponentsOfCashCashEquivalentsAndInvestmentsTableTableTextBlock>
    <us-gaap:Cash
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzItMS0xLTEtMjg4MDU_a4bb867f-9f0a-49fe-a601-a059f7f1c133"
      unitRef="usd">185624000</us-gaap:Cash>
    <us-gaap:Cash
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzItMy0xLTEtMjg4MDU_a8b37101-8355-429e-8ba8-6480714e2dd9"
      unitRef="usd">266609000</us-gaap:Cash>
    <us-gaap:MoneyMarketFundsAtCarryingValue
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzQtMS0xLTEtMjg4MDU_3c58acfc-ca41-44ab-a8f3-d76ed53d28ad"
      unitRef="usd">537000</us-gaap:MoneyMarketFundsAtCarryingValue>
    <us-gaap:MoneyMarketFundsAtCarryingValue
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzQtMy0xLTEtMjg4MDU_3ca52bf9-2bea-4d1f-adb8-98ca733cfb1d"
      unitRef="usd">2464000</us-gaap:MoneyMarketFundsAtCarryingValue>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzUtMS0xLTEtMjg4MDU_ac300beb-8cef-4372-b55c-71a4bb802764"
      unitRef="usd">186161000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzUtMy0xLTEtMjg4MDU_2393e22d-0cea-48d7-a18a-aec4a6ab4677"
      unitRef="usd">269073000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="i258ae9fc57d74aa6b16c0989df29cb9b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzYtMS0xLTEtMzM4ODI_c9fcdff4-ccfc-421f-a7ce-00312585da57"
      unitRef="usd">73088000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="i80e0e9f13cd94edeb850daaf5cbf340a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzYtMy0xLTEtMzM4ODI_1a685299-bfa8-40d3-93a9-f75e6fbe9ea5"
      unitRef="usd">32714000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="idc23ae27e8c045be80b9ae12562de1e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzctMS0xLTEtMzM4ODY_809bcb71-d4b5-40a2-a3bc-4f2d30b99e62"
      unitRef="usd">37655000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="iba5325337fb447629dd40761b20085ac_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzctMy0xLTEtMzM4ODY_5d20df4d-232e-49b6-9595-44dfbffa1391"
      unitRef="usd">25160000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="i4f034dcc34ec4f97b1b287538da11e25_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzYtMS0xLTEtMjg4MDU_077d904c-3fc4-439b-b002-8c2cc7cbe6f0"
      unitRef="usd">18912000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="id45501f2632647e7bbcd9975d9d5f9b8_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzYtMy0xLTEtMjg4MDU_02371b32-d126-4e53-99a4-2e083eb3f518"
      unitRef="usd">35403000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="i2e6e3966f74d464096c8781827b91619_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzctMS0xLTEtMjg4MDU_0de4ea39-5e43-4184-8470-c37dd4a9be22"
      unitRef="usd">4998000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="i70319cf3a4cf43499a8860f2430ec150_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzctMy0xLTEtMjg4MDU_9deec0e7-ee4a-41ab-bb21-f2f7392e4dd1"
      unitRef="usd">1303000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="i0502b4b2a04743ed970b8454fdfdf9e1_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzgtMS0xLTEtMjg4MDU_cfa65401-cdc0-4d37-bd0d-1dac53b10cbd"
      unitRef="usd">2802000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="i1fc3fbc333a64fb2a5e6449b7f32a8a3_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzgtMy0xLTEtMjg4MDU_6e3c2506-01a1-4b71-9549-af4dabbbcd2c"
      unitRef="usd">0</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="i1efe35c9a2da425e8ed4586c7a51eda9_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzktMS0xLTEtMjg4MDU_b3d71643-9236-495d-b4c6-5e45185d3741"
      unitRef="usd">0</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="i1bbde01d9d9f47dab768ca3b0748fef3_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzktMy0xLTEtMjg4MDU_6a2e6058-5847-41ef-93e4-45ffc362e7a3"
      unitRef="usd">8660000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzE1LTEtMS0xLTI4ODA1_78d3501a-20b0-4152-82a4-14db31298814"
      unitRef="usd">137455000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzE1LTMtMS0xLTI4ODA1_33187824-45ff-4f30-996a-a7b0e501eb1e"
      unitRef="usd">103240000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent
      contextRef="i258ae9fc57d74aa6b16c0989df29cb9b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzE2LTEtMS0xLTI4ODA1_332ba45c-1ca8-493b-9bf1-7b44a47ff255"
      unitRef="usd">481218000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent
      contextRef="i80e0e9f13cd94edeb850daaf5cbf340a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzE2LTMtMS0xLTI4ODA1_6c59cf0d-7fc4-413c-b93a-25b4a480e6a2"
      unitRef="usd">203428000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent
      contextRef="idc23ae27e8c045be80b9ae12562de1e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzE3LTEtMS0xLTMzODk5_cd25539e-811d-4358-b2b3-b987196e36db"
      unitRef="usd">43940000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent
      contextRef="iba5325337fb447629dd40761b20085ac_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzE3LTMtMS0xLTMzODk5_44434eb5-ebb7-44a0-bedb-63035b88c26d"
      unitRef="usd">67058000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent
      contextRef="i4f034dcc34ec4f97b1b287538da11e25_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzE3LTEtMS0xLTI4ODA1_57b12480-7c98-4b69-93d3-c0302dae843f"
      unitRef="usd">39753000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent
      contextRef="id45501f2632647e7bbcd9975d9d5f9b8_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzE3LTMtMS0xLTI4ODA1_1cf548b3-7fd5-407c-8f21-6179e3a150f1"
      unitRef="usd">96458000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent
      contextRef="i0502b4b2a04743ed970b8454fdfdf9e1_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzE5LTEtMS0xLTI4ODA1_2da88d00-0c82-40f6-8993-31bb9be85faf"
      unitRef="usd">16077000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent
      contextRef="i1fc3fbc333a64fb2a5e6449b7f32a8a3_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzE5LTMtMS0xLTI4ODA1_7940c3f6-e492-43e7-96ff-115fb034b3ad"
      unitRef="usd">19006000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent
      contextRef="i1efe35c9a2da425e8ed4586c7a51eda9_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzIxLTEtMS0xLTMzOTAz_c4bd9630-93c2-403a-9bc0-32b6b723842a"
      unitRef="usd">2119000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent
      contextRef="i1bbde01d9d9f47dab768ca3b0748fef3_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzIxLTMtMS0xLTMzOTAz_72e1dc92-8ed8-41cd-a2a1-e2db75fd3df9"
      unitRef="usd">3440000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent
      contextRef="i2e6e3966f74d464096c8781827b91619_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzIwLTEtMS0xLTI4ODA1_7814fced-79b7-4e48-8b62-05ef0befa8aa"
      unitRef="usd">641000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent
      contextRef="i70319cf3a4cf43499a8860f2430ec150_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzIwLTMtMS0xLTI4ODA1_1fe493bd-b056-4487-896f-653ea7958083"
      unitRef="usd">5735000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent>
    <us-gaap:LongTermInvestments
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzIyLTEtMS0xLTI4ODA1_79a3949a-c4c9-4236-a5fa-1fca52174dd7"
      unitRef="usd">583748000</us-gaap:LongTermInvestments>
    <us-gaap:LongTermInvestments
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzIyLTMtMS0xLTI4ODA1_bf338f76-7934-445d-a960-c73712c1f6b4"
      unitRef="usd">395125000</us-gaap:LongTermInvestments>
    <cgnx:CashCashEquivalentsShortTermAndLongTermInvestments
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzIzLTEtMS0xLTI4ODA1_fb050c13-8d80-4306-9306-34bdf6ca7e8a"
      unitRef="usd">907364000</cgnx:CashCashEquivalentsShortTermAndLongTermInvestments>
    <cgnx:CashCashEquivalentsShortTermAndLongTermInvestments
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzIzLTMtMS0xLTI4ODA1_2a9a508a-6608-48be-b119-c381276308c2"
      unitRef="usd">767438000</cgnx:CashCashEquivalentsShortTermAndLongTermInvestments>
    <cgnx:DueFromForeignBanks
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90ZXh0cmVnaW9uOjg0NTBmMTM1MjVlNzRiZmE5NWI4OTU1N2YwYzExMzI0XzIwNQ_de33ebe7-ed8c-4b6e-b3eb-f79974d9d0ea"
      unitRef="usd">142009000</cgnx:DueFromForeignBanks>
    <cgnx:DueFromForeignBanks
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90ZXh0cmVnaW9uOjg0NTBmMTM1MjVlNzRiZmE5NWI4OTU1N2YwYzExMzI0XzIxMg_14d8038e-feed-45f8-851c-e0205c6e4944"
      unitRef="usd">225853000</cgnx:DueFromForeignBanks>
    <us-gaap:InterestReceivable
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90ZXh0cmVnaW9uOjg0NTBmMTM1MjVlNzRiZmE5NWI4OTU1N2YwYzExMzI0XzEyNTY_dc8d863a-81da-419c-be58-ef6817b36151"
      unitRef="usd">3037000</us-gaap:InterestReceivable>
    <us-gaap:InterestReceivable
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90ZXh0cmVnaW9uOjg0NTBmMTM1MjVlNzRiZmE5NWI4OTU1N2YwYzExMzI0XzEyNjM_552c30d3-7db3-4889-82f8-4229ccfb66b9"
      unitRef="usd">1560000</us-gaap:InterestReceivable>
    <us-gaap:ScheduleOfAvailableForSaleSecuritiesReconciliationTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90ZXh0cmVnaW9uOjg0NTBmMTM1MjVlNzRiZmE5NWI4OTU1N2YwYzExMzI0XzI0MTc_15820db2-3b33-411b-b9d6-dd50df2720dc">&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the Company&#x2019;s available-for-sale investments as of December&#160;31, 2021 (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:36.583%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.002%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.709%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.002%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.005%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Amortized&lt;br/&gt;Cost&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Gross&lt;br/&gt;Unrealized&lt;br/&gt;Gains&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Gross&lt;br/&gt;Unrealized&lt;br/&gt;Losses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Fair Value&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Current:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Corporate bonds&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;72,863&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;251&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(26)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;73,088&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Asset-backed securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;37,568&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;112&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(25)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;37,655&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Treasury bills&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;18,864&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;51&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(3)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;18,912&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Municipal bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,029&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(32)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,998&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Agency bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,800&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,802&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Non-current:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Corporate bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;485,140&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;555&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(4,477)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;481,218&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Asset-backed securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;44,197&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;45&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(302)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;43,940&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Treasury bills&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;39,740&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;46&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(33)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;39,753&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Agency bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;16,128&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(51)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;16,077&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Sovereign bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,141&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(22)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,119&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Municipal bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;635&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;641&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;725,105&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;1,069&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(4,971)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;721,203&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfAvailableForSaleSecuritiesReconciliationTableTextBlock>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="i5270f007445d4f288628feb6aa72bd8d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzMtMS0xLTEtMjg4MDU_bc441cb6-e400-4d60-8813-e11787837ee8"
      unitRef="usd">72863000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="i5270f007445d4f288628feb6aa72bd8d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzMtMy0xLTEtMjg4MDU_7d951226-3b08-47ae-8939-99cc3512f4f1"
      unitRef="usd">251000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i5270f007445d4f288628feb6aa72bd8d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzMtNS0xLTEtMjg4MDU_a5c3d586-c08e-47b9-ad74-a63d1aa71ac0"
      unitRef="usd">26000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i5270f007445d4f288628feb6aa72bd8d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzMtNy0xLTEtMjg4MDU_ab7548db-ecf0-479d-8bf3-cc848d08f1af"
      unitRef="usd">73088000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="i0bb7d91c89c140edb09cd5c36634ea3a_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzQtMS0xLTEtMjg4MDU_c85cb2f8-f910-4191-a177-7c073f42e0a1"
      unitRef="usd">37568000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="i0bb7d91c89c140edb09cd5c36634ea3a_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzQtMy0xLTEtMjg4MDU_e99c4b17-efc7-4912-bef1-52a4077d74e3"
      unitRef="usd">112000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i0bb7d91c89c140edb09cd5c36634ea3a_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzQtNS0xLTEtMjg4MDU_79a3468f-8ed0-4ca3-b944-64b46d54ce94"
      unitRef="usd">25000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i0bb7d91c89c140edb09cd5c36634ea3a_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzQtNy0xLTEtMjg4MDU_f08b0f54-76ed-487f-b085-0f550cb1aa5d"
      unitRef="usd">37655000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="i5bcf06fc6e654f668da80ed998328a22_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzctMS0xLTEtMzM5MjI_af18defe-5733-4ddc-adbc-690c6a5ac1f7"
      unitRef="usd">18864000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="i5bcf06fc6e654f668da80ed998328a22_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzctMy0xLTEtMzM5MjI_9af008c1-9f35-416c-8009-27cf9cb4dfa8"
      unitRef="usd">51000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i5bcf06fc6e654f668da80ed998328a22_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzctNS0xLTEtMzM5MjI_de0a7189-334e-4eb6-b750-395731c7a630"
      unitRef="usd">3000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i5bcf06fc6e654f668da80ed998328a22_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzctNy0xLTEtMzM5MjI_5c4633e2-d93f-4949-91e4-393a19c0f179"
      unitRef="usd">18912000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="ibeb1eba6e1a94b98aaa8ea87f184efb0_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzctMS0xLTEtMjg4MDU_2fa07f90-de6e-45fd-a0ad-7ca49fdbbef6"
      unitRef="usd">5029000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="ibeb1eba6e1a94b98aaa8ea87f184efb0_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzctMy0xLTEtMjg4MDU_6bbbb113-22ca-4952-8aad-c668ebfe0f58"
      unitRef="usd">1000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="ibeb1eba6e1a94b98aaa8ea87f184efb0_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzctNS0xLTEtMjg4MDU_a088e4f4-310e-448a-8fa9-ccf7e2c95d1b"
      unitRef="usd">32000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="ibeb1eba6e1a94b98aaa8ea87f184efb0_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzctNy0xLTEtMjg4MDU_48d20728-76e7-482a-9095-4fa1f02811fc"
      unitRef="usd">4998000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="i6ec0d0fb26044e35997ce16c3db61e60_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzgtMS0xLTEtMzM5Mjk_ffb76243-44e4-4eda-925e-cd75be0639c2"
      unitRef="usd">2800000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="i6ec0d0fb26044e35997ce16c3db61e60_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzgtMy0xLTEtMzM5Mjk_942dad3b-9b3c-4d66-8a4a-a5c694aa120c"
      unitRef="usd">2000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i6ec0d0fb26044e35997ce16c3db61e60_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzgtNS0xLTEtMzM5Mjk_c5226c1c-0e0d-41da-b67f-9a0f5eafed8e"
      unitRef="usd">0</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i6ec0d0fb26044e35997ce16c3db61e60_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzgtNy0xLTEtMzM5Mjk_1ae752eb-a2c6-47f5-83ba-efb7084a0f66"
      unitRef="usd">2802000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="i576160d57c9b437b9a770c73f2dfb9e0_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzEwLTEtMS0xLTI4ODA1_2fcf580e-42ee-4b80-9be3-fa97207b38d7"
      unitRef="usd">485140000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="i576160d57c9b437b9a770c73f2dfb9e0_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzEwLTMtMS0xLTI4ODA1_f96e51e4-5673-4ffd-b083-4f1e59f1babe"
      unitRef="usd">555000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i576160d57c9b437b9a770c73f2dfb9e0_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzEwLTUtMS0xLTI4ODA1_16ad477a-5132-4a08-a64b-11b272cfaf6f"
      unitRef="usd">4477000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i576160d57c9b437b9a770c73f2dfb9e0_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzEwLTctMS0xLTI4ODA1_777b0f59-b46a-4fdf-aaa3-8f70f6f2bde3"
      unitRef="usd">481218000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="ied62dc4cfad5417a8633ac6443c3d7ea_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzExLTEtMS0xLTMzOTU4_c40d5b38-a23b-4a74-8d73-3a171738edbe"
      unitRef="usd">44197000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="ied62dc4cfad5417a8633ac6443c3d7ea_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzExLTMtMS0xLTMzOTU4_f85b3146-8b2f-476c-999f-57a75edc3ca0"
      unitRef="usd">45000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="ied62dc4cfad5417a8633ac6443c3d7ea_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzExLTUtMS0xLTMzOTU4_fdaa79fd-a024-4bec-b2e4-a4931ae6fec8"
      unitRef="usd">302000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="ied62dc4cfad5417a8633ac6443c3d7ea_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzExLTctMS0xLTMzOTU4_3616c1d1-0a4e-4763-9922-ab23064ee227"
      unitRef="usd">43940000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="i5dfe7c62945b4ac1ae3a7fc0704e6eda_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzExLTEtMS0xLTI4ODA1_115a0754-dc8d-4ca4-a229-7f4f843e1b1b"
      unitRef="usd">39740000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="i5dfe7c62945b4ac1ae3a7fc0704e6eda_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzExLTMtMS0xLTI4ODA1_b696dc45-b7a7-4604-82ae-90249e4a147b"
      unitRef="usd">46000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i5dfe7c62945b4ac1ae3a7fc0704e6eda_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzExLTUtMS0xLTI4ODA1_ef45d596-a6a7-42bd-bbd2-5d84e2447e32"
      unitRef="usd">33000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i5dfe7c62945b4ac1ae3a7fc0704e6eda_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzExLTctMS0xLTI4ODA1_da036745-0d3a-4676-99d2-793f4fabdffd"
      unitRef="usd">39753000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="i146468f197ec4ffaaf568dea9d808150_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzEyLTEtMS0xLTI4ODA1_a380ab13-f043-40a3-aa3f-6838df8b7fbe"
      unitRef="usd">16128000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="i146468f197ec4ffaaf568dea9d808150_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzEyLTMtMS0xLTI4ODA1_9415c71f-8264-4dcc-836f-1bb7c140d2b4"
      unitRef="usd">0</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i146468f197ec4ffaaf568dea9d808150_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzEyLTUtMS0xLTI4ODA1_16c647d4-6eee-4512-a2f0-774547b389dc"
      unitRef="usd">51000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i146468f197ec4ffaaf568dea9d808150_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzEyLTctMS0xLTI4ODA1_9698a391-1647-4f4c-84a1-939fc12326aa"
      unitRef="usd">16077000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="ie09121a494bc4ffb945fdfa43d22add3_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzEzLTEtMS0xLTI4ODA1_108b952e-5469-49a0-a0b2-216f14c64464"
      unitRef="usd">2141000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="ie09121a494bc4ffb945fdfa43d22add3_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzEzLTMtMS0xLTI4ODA1_0fcb3118-d710-4105-baeb-a413996f67e1"
      unitRef="usd">0</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="ie09121a494bc4ffb945fdfa43d22add3_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzEzLTUtMS0xLTI4ODA1_2736ed20-d209-4ec9-8c44-3e714fb5849f"
      unitRef="usd">22000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="ie09121a494bc4ffb945fdfa43d22add3_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzEzLTctMS0xLTI4ODA1_66ef647b-7f10-4915-9327-c7614781d0cb"
      unitRef="usd">2119000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="i901039d16aa346d6b2d5832a09c9e94e_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzE0LTEtMS0xLTI4ODA1_7753c8b0-effa-4aef-9b68-8219f090eb1e"
      unitRef="usd">635000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="i901039d16aa346d6b2d5832a09c9e94e_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzE0LTMtMS0xLTI4ODA1_35a30478-4ecf-47f6-beff-877326d658bc"
      unitRef="usd">6000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i901039d16aa346d6b2d5832a09c9e94e_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzE0LTUtMS0xLTI4ODA1_5356f665-b664-4203-b911-4d61496fd3e8"
      unitRef="usd">0</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i901039d16aa346d6b2d5832a09c9e94e_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzE0LTctMS0xLTI4ODA1_6c2633eb-bc21-42e8-8b79-03c87a9b94ed"
      unitRef="usd">641000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzE2LTEtMS0xLTI4ODA1_1419243f-5767-43ae-9496-adbac0f4dfeb"
      unitRef="usd">725105000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzE2LTMtMS0xLTI4ODA1_bf36bfc6-4383-4e9e-b79d-a9555d7b39da"
      unitRef="usd">1069000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzE2LTUtMS0xLTI4ODA1_1fb29981-c2f9-4d49-8970-a3c67df112ac"
      unitRef="usd">4971000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzE2LTctMS0xLTI4ODA1_7d28f744-7d4a-4904-bd16-435b5389a607"
      unitRef="usd">721203000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:ScheduleOfUnrealizedLossOnInvestmentsTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90ZXh0cmVnaW9uOjg0NTBmMTM1MjVlNzRiZmE5NWI4OTU1N2YwYzExMzI0XzI0MTE_533fc9f1-a0c2-49c2-a17c-ac67e97ad3f8">&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.561%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:34.289%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.032%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.032%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.032%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:8.885%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.032%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.328%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Unrealized Loss&lt;br/&gt;Position For Less than&lt;br/&gt;12 Months&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Unrealized Loss&lt;br/&gt;Position For Greater than&lt;br/&gt;12 Months&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Total&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Fair Value&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Unrealized&lt;br/&gt;Losses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Fair Value&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Unrealized&lt;br/&gt;Losses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Fair Value&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Unrealized&lt;br/&gt;Losses&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Corporate bonds&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;431,652&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(4,470)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,110&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(33)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;434,762&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(4,503)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Asset-backed securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;50,980&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(317)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;806&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(10)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;51,786&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(327)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Treasury bills&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;25,040&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(36)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;25,040&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(36)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Agency Bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;16,077&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(51)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;16,077&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(51)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Municipal bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,892&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(32)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,892&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(32)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Sovereign bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,119&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(22)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,119&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(22)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;525,868&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(4,896)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;7,808&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(75)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;533,676&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(4,971)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;</us-gaap:ScheduleOfUnrealizedLossOnInvestmentsTableTextBlock>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months
      contextRef="i258ae9fc57d74aa6b16c0989df29cb9b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzMtMS0xLTEtMzM5NzM_1a41ae93-8319-40e4-b0a5-ea41b152fa56"
      unitRef="usd">431652000</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss
      contextRef="i258ae9fc57d74aa6b16c0989df29cb9b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzMtMy0xLTEtMzM5NzM_1b3d7acd-dafb-4466-9033-ad5a10d356a9"
      unitRef="usd">4470000</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger
      contextRef="i258ae9fc57d74aa6b16c0989df29cb9b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzMtNS0xLTEtMzM5NzM_6482b01f-5d00-43e2-bcac-5b0ea75c7e22"
      unitRef="usd">3110000</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss
      contextRef="i258ae9fc57d74aa6b16c0989df29cb9b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzMtNy0xLTEtMzM5NzM_26a000d8-1031-46f3-9ca2-a4bbba6cc624"
      unitRef="usd">33000</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPosition
      contextRef="i258ae9fc57d74aa6b16c0989df29cb9b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzMtOS0xLTEtMzM5NzM_920a798a-9658-4d55-b9a9-3ef14fa19ef2"
      unitRef="usd">434762000</us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPosition>
    <us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss
      contextRef="i258ae9fc57d74aa6b16c0989df29cb9b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzMtMTEtMS0xLTMzOTcz_cd4f41fe-ef93-40a2-8287-95d8b2810e83"
      unitRef="usd">4503000</us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months
      contextRef="idc23ae27e8c045be80b9ae12562de1e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzQtMS0xLTEtMzM5NzY_e003f0be-b0a4-4cb5-834f-96e89289a83a"
      unitRef="usd">50980000</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss
      contextRef="idc23ae27e8c045be80b9ae12562de1e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzQtMy0xLTEtMzM5NzY_5f3ad607-a28d-46ac-838e-5f9fcb973cee"
      unitRef="usd">317000</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger
      contextRef="idc23ae27e8c045be80b9ae12562de1e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzQtNS0xLTEtMzM5NzY_ae63fa0b-ece8-48bc-a283-f4495d59a04d"
      unitRef="usd">806000</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss
      contextRef="idc23ae27e8c045be80b9ae12562de1e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzQtNy0xLTEtMzM5NzY_8abe4c4b-16f9-4359-8a93-dcbb4fd9c419"
      unitRef="usd">10000</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPosition
      contextRef="idc23ae27e8c045be80b9ae12562de1e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzQtOS0xLTEtMzM5NzY_5eb4be04-aaa8-4fc8-98b0-e2966984b1b2"
      unitRef="usd">51786000</us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPosition>
    <us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss
      contextRef="idc23ae27e8c045be80b9ae12562de1e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzQtMTEtMS0xLTMzOTc2_7fede6c3-d314-4cff-867d-4883588ac46c"
      unitRef="usd">327000</us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months
      contextRef="i56de818c0a5f4e8eacf53b04d2ab45e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzMtMS0xLTEtMjg4MDU_6b125404-112c-41d7-b619-3d33baa42a69"
      unitRef="usd">25040000</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss
      contextRef="i56de818c0a5f4e8eacf53b04d2ab45e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzMtMy0xLTEtMjg4MDU_485bce7d-27cb-4c72-aa09-daf6df0d1cc9"
      unitRef="usd">36000</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger
      contextRef="i56de818c0a5f4e8eacf53b04d2ab45e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzMtNS0xLTEtMjg4MDU_720f49d5-15e8-48be-a516-79e7ae6bbb31"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss
      contextRef="i56de818c0a5f4e8eacf53b04d2ab45e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzMtNy0xLTEtMjg4MDU_ff540eb7-01fd-4ac9-826c-3313f758eba9"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPosition
      contextRef="i56de818c0a5f4e8eacf53b04d2ab45e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzMtOS0xLTEtMjg4MDU_0dce033b-20ec-47ee-b04a-885d63048f01"
      unitRef="usd">25040000</us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPosition>
    <us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss
      contextRef="i56de818c0a5f4e8eacf53b04d2ab45e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzMtMTEtMS0xLTI4ODA1_4d67a411-bfc8-4fb6-8d06-ad519949df9e"
      unitRef="usd">36000</us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months
      contextRef="i0502b4b2a04743ed970b8454fdfdf9e1_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzQtMS0xLTEtMjg4MDU_005e5699-e333-4e90-87ed-40881100376e"
      unitRef="usd">16077000</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss
      contextRef="i0502b4b2a04743ed970b8454fdfdf9e1_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzQtMy0xLTEtMjg4MDU_de1f7fc6-2d2c-4702-9834-324c25bc1f11"
      unitRef="usd">51000</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger
      contextRef="i0502b4b2a04743ed970b8454fdfdf9e1_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzQtNS0xLTEtMjg4MDU_028b7caa-5b84-44b0-a8df-7f9c70a079e4"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss
      contextRef="i0502b4b2a04743ed970b8454fdfdf9e1_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzQtNy0xLTEtMjg4MDU_cd66f828-c2fe-4bb7-9be9-1c7d42c2d6e9"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPosition
      contextRef="i0502b4b2a04743ed970b8454fdfdf9e1_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzQtOS0xLTEtMjg4MDU_d758de3e-8297-4d32-a3fa-2db439b53391"
      unitRef="usd">16077000</us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPosition>
    <us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss
      contextRef="i0502b4b2a04743ed970b8454fdfdf9e1_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzQtMTEtMS0xLTI4ODA1_48460740-a77f-4027-b5c9-2bc4a088c796"
      unitRef="usd">51000</us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months
      contextRef="i2e6e3966f74d464096c8781827b91619_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzctMS0xLTEtMzM5ODM_15940937-dcd6-40b4-a65d-4dc62ef8dc39"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss
      contextRef="i2e6e3966f74d464096c8781827b91619_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzctMy0xLTEtMzM5ODM_574d2348-7210-4242-92f0-b2142831ef10"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger
      contextRef="i2e6e3966f74d464096c8781827b91619_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzctNS0xLTEtMzM5ODM_bacd6fd8-d0cb-40f0-972e-2ddc8c7c1b6b"
      unitRef="usd">3892000</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss
      contextRef="i2e6e3966f74d464096c8781827b91619_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzctNy0xLTEtMzM5ODM_415d99c2-475f-47c1-958a-8c2c7a7fbcdf"
      unitRef="usd">32000</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPosition
      contextRef="i2e6e3966f74d464096c8781827b91619_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzctOS0xLTEtMzM5ODM_c5fc4a87-1804-4d94-bd52-3349d2ae1da2"
      unitRef="usd">3892000</us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPosition>
    <us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss
      contextRef="i2e6e3966f74d464096c8781827b91619_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzctMTEtMS0xLTMzOTgz_9f8e78fc-0e15-4014-9268-8b4f38a7ee96"
      unitRef="usd">32000</us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months
      contextRef="i1efe35c9a2da425e8ed4586c7a51eda9_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzUtMS0xLTEtMjg4MDU_e6e8b84d-141b-4977-aced-315fa8db0b9c"
      unitRef="usd">2119000</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss
      contextRef="i1efe35c9a2da425e8ed4586c7a51eda9_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzUtMy0xLTEtMjg4MDU_df3b915f-4b3e-46b6-ae3b-eda157f88867"
      unitRef="usd">22000</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger
      contextRef="i1efe35c9a2da425e8ed4586c7a51eda9_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzUtNS0xLTEtMjg4MDU_215d5d29-aa9a-40fc-a369-13c0a506dae9"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss
      contextRef="i1efe35c9a2da425e8ed4586c7a51eda9_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzUtNy0xLTEtMjg4MDU_056b768c-32ee-4b21-8895-3e8881ac52d6"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPosition
      contextRef="i1efe35c9a2da425e8ed4586c7a51eda9_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzUtOS0xLTEtMjg4MDU_16986103-c0d7-4b34-a266-76403338e8a5"
      unitRef="usd">2119000</us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPosition>
    <us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss
      contextRef="i1efe35c9a2da425e8ed4586c7a51eda9_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzUtMTEtMS0xLTI4ODA1_c0c3c7b3-c8cb-4adb-a059-6e9090200a43"
      unitRef="usd">22000</us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzktMS0xLTEtMjg4MDU_fa6e1912-a544-4813-a733-1ab74156bfa3"
      unitRef="usd">525868000</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzktMy0xLTEtMjg4MDU_bec757c7-1309-4c3b-aea6-eb2713fc74f5"
      unitRef="usd">4896000</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzktNS0xLTEtMjg4MDU_52557de2-ed1d-4e6e-94b1-77041e816b97"
      unitRef="usd">7808000</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzktNy0xLTEtMjg4MDU_539d5a91-d64f-4c6a-bdda-dab05be9d8f4"
      unitRef="usd">75000</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPosition
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzktOS0xLTEtMjg4MDU_adfa3bea-95cf-4b4b-8242-803cf473a2fe"
      unitRef="usd">533676000</us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPosition>
    <us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzktMTEtMS0xLTI4ODA1_035469bc-94ef-44d9-90e0-853907c53fda"
      unitRef="usd">4971000</us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossTableTextBlock
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90ZXh0cmVnaW9uOjg0NTBmMTM1MjVlNzRiZmE5NWI4OTU1N2YwYzExMzI0XzI0NDc_b6f8101f-07ed-43c2-aa44-2122a65f08ce">&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes changes in the allowance for credit losses (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.415%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:79.341%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:18.459%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2019&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Increases to the allowance for credit losses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;160&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Decreases to the allowance for credit losses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(160)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossTableTextBlock>
    <us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90ZXh0cmVnaW9uOjg0NTBmMTM1MjVlNzRiZmE5NWI4OTU1N2YwYzExMzI0XzI0NDc_fc018196-e80d-46b2-a5a8-116740b09583">&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes changes in the allowance for credit losses (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.415%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:79.341%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:18.459%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2019&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Increases to the allowance for credit losses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;160&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Decreases to the allowance for credit losses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(160)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossTableTextBlock>
    <us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLoss
      contextRef="ia991b13c7b074439964a26d579235ee4_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTpmZmI4ODlhYjI3Y2M0MTNiYTdmY2MzNDg5OWJkZTQwNy90YWJsZXJhbmdlOmZmYjg4OWFiMjdjYzQxM2JhN2ZjYzM0ODk5YmRlNDA3XzAtMS0xLTEtMjg4MDU_955bdb4a-2330-4de0-9c9a-127d56035795"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleChangeInPresentValueExpenseReversal
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTpmZmI4ODlhYjI3Y2M0MTNiYTdmY2MzNDg5OWJkZTQwNy90YWJsZXJhbmdlOmZmYjg4OWFiMjdjYzQxM2JhN2ZjYzM0ODk5YmRlNDA3XzEtMS0xLTEtMjk1ODA_23226358-f744-40a1-bf5c-3082fa27cae6"
      unitRef="usd">160000</us-gaap:DebtSecuritiesAvailableForSaleChangeInPresentValueExpenseReversal>
    <us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossRecovery
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTpmZmI4ODlhYjI3Y2M0MTNiYTdmY2MzNDg5OWJkZTQwNy90YWJsZXJhbmdlOmZmYjg4OWFiMjdjYzQxM2JhN2ZjYzM0ODk5YmRlNDA3XzItMS0xLTEtMjk1ODA_b613c510-8cb7-492e-953f-eef07a624cde"
      unitRef="usd">-160000</us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossRecovery>
    <us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLoss
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTpmZmI4ODlhYjI3Y2M0MTNiYTdmY2MzNDg5OWJkZTQwNy90YWJsZXJhbmdlOmZmYjg4OWFiMjdjYzQxM2JhN2ZjYzM0ODk5YmRlNDA3XzQtMS0xLTEtMjg4MDU_eec09592-1abd-4930-acc4-c8246c0ee077"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLoss
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTpmZmI4ODlhYjI3Y2M0MTNiYTdmY2MzNDg5OWJkZTQwNy90YWJsZXJhbmdlOmZmYjg4OWFiMjdjYzQxM2JhN2ZjYzM0ODk5YmRlNDA3XzktMS0xLTEtMjg4MDU_a3b04a57-64ee-4b1f-a806-ed6c6ee289c1"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleRealizedGain
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90ZXh0cmVnaW9uOjg0NTBmMTM1MjVlNzRiZmE5NWI4OTU1N2YwYzExMzI0XzIxMjg_2f02daea-00dd-4bee-a59e-48023e6e1f4c"
      unitRef="usd">246000</us-gaap:DebtSecuritiesAvailableForSaleRealizedGain>
    <us-gaap:DebtSecuritiesAvailableForSaleRealizedGain
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90ZXh0cmVnaW9uOjg0NTBmMTM1MjVlNzRiZmE5NWI4OTU1N2YwYzExMzI0XzIxMzg_795d6684-8741-496b-b0da-a2abe29acea9"
      unitRef="usd">4283000</us-gaap:DebtSecuritiesAvailableForSaleRealizedGain>
    <us-gaap:DebtSecuritiesAvailableForSaleRealizedGain
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90ZXh0cmVnaW9uOjg0NTBmMTM1MjVlNzRiZmE5NWI4OTU1N2YwYzExMzI0XzIxNTI_72f7a0cd-4d27-4712-81e2-21bda00f2519"
      unitRef="usd">1581000</us-gaap:DebtSecuritiesAvailableForSaleRealizedGain>
    <us-gaap:DebtSecuritiesAvailableForSaleRealizedLoss
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90ZXh0cmVnaW9uOjg0NTBmMTM1MjVlNzRiZmE5NWI4OTU1N2YwYzExMzI0XzIyMjg_018ef2c4-f531-4047-84c9-497849ce89dd"
      unitRef="usd">10000</us-gaap:DebtSecuritiesAvailableForSaleRealizedLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleRealizedLoss
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90ZXh0cmVnaW9uOjg0NTBmMTM1MjVlNzRiZmE5NWI4OTU1N2YwYzExMzI0XzIyMzg_85039d5d-8809-4e7f-b14c-3b5fa931cd3c"
      unitRef="usd">164000</us-gaap:DebtSecuritiesAvailableForSaleRealizedLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleRealizedLoss
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90ZXh0cmVnaW9uOjg0NTBmMTM1MjVlNzRiZmE5NWI4OTU1N2YwYzExMzI0XzIyNTI_b250ddbb-2c74-4cf5-bd32-37450f555e81"
      unitRef="usd">129000</us-gaap:DebtSecuritiesAvailableForSaleRealizedLoss>
    <us-gaap:InvestmentsClassifiedByContractualMaturityDateTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90ZXh0cmVnaW9uOjg0NTBmMTM1MjVlNzRiZmE5NWI4OTU1N2YwYzExMzI0XzI0MjA_c972c394-680f-4321-a4bb-79b7c80dfa1c">&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the effective maturity dates of the Company&#x2019;s available-for-sale investments as of December&#160;31, 2021 (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.561%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:34.876%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.206%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.913%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:8.297%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:7.857%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:7.857%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.624%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;&amp;lt;1&#160;Year&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;1-2&#160;Years&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2-3&#160;Years&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;3-4&#160;Years&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;4-5&#160;Years&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Total&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Corporate bonds&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;73,088&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;205,331&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;175,992&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;64,356&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;35,539&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;554,306&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Asset-backed securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;37,655&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;23,370&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,668&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;8,092&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;7,810&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;81,595&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Treasury bills&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;18,912&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;39,753&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;58,665&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Agency bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,802&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;16,077&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;18,879&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Municipal bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,998&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;641&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,639&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Sovereign bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,052&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,067&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,119&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;137,455&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;285,172&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;181,712&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;73,515&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;43,349&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;721,203&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:InvestmentsClassifiedByContractualMaturityDateTableTextBlock>
    <us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue
      contextRef="i258ae9fc57d74aa6b16c0989df29cb9b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzEtMS0xLTEtMjg4MDU_17d620d8-4896-4fdb-a441-8e5c4516001e"
      unitRef="usd">73088000</us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue
      contextRef="i258ae9fc57d74aa6b16c0989df29cb9b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzEtMy0xLTEtMjg4MDU_08e5e69f-8a31-4517-9214-22e1d1009720"
      unitRef="usd">205331000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue
      contextRef="i258ae9fc57d74aa6b16c0989df29cb9b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzEtNS0xLTEtMjg4MDU_80554b29-a3b2-4767-8309-7d47c71e7d5a"
      unitRef="usd">175992000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue
      contextRef="i258ae9fc57d74aa6b16c0989df29cb9b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzEtNy0xLTEtMjg4MDU_7c80bb9b-ddca-4f52-848d-b0b40dc9e71a"
      unitRef="usd">64356000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue
      contextRef="i258ae9fc57d74aa6b16c0989df29cb9b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzEtOS0xLTEtMjg4MDU_11c0bde9-8133-4a00-b106-309dce3e56f6"
      unitRef="usd">35539000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i258ae9fc57d74aa6b16c0989df29cb9b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzEtMTMtMS0xLTI4ODA1_5135d111-bcf6-4c66-9874-ebc8f16f2a7c"
      unitRef="usd">554306000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue
      contextRef="idc23ae27e8c045be80b9ae12562de1e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzItMS0xLTEtMzQwMTQ_43f3c412-3e72-4fc8-8b13-0090b6c699fd"
      unitRef="usd">37655000</us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue
      contextRef="idc23ae27e8c045be80b9ae12562de1e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzItMy0xLTEtMzQwMTQ_1be44b21-4e52-4c39-bdb1-04664400256e"
      unitRef="usd">23370000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue
      contextRef="idc23ae27e8c045be80b9ae12562de1e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzItNS0xLTEtMzQwMTQ_beb87181-96f4-4932-9561-101c32cb77e9"
      unitRef="usd">4668000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue
      contextRef="idc23ae27e8c045be80b9ae12562de1e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzItNy0xLTEtMzQwMTQ_836670d2-d4ac-4ccb-be51-38da9ffc23f1"
      unitRef="usd">8092000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue
      contextRef="idc23ae27e8c045be80b9ae12562de1e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzItOS0xLTEtMzQwMTQ_de579158-b68f-4863-be60-3531f362e108"
      unitRef="usd">7810000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="idc23ae27e8c045be80b9ae12562de1e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzItMTMtMS0xLTM0MDE0_650a9748-b429-4f43-951d-235b6ab366ed"
      unitRef="usd">81595000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue
      contextRef="i56de818c0a5f4e8eacf53b04d2ab45e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzItMS0xLTEtMjg4MDU_9f8853c2-a15d-4523-acf7-8c091de1068d"
      unitRef="usd">18912000</us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue
      contextRef="i56de818c0a5f4e8eacf53b04d2ab45e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzItMy0xLTEtMjg4MDU_1d91c4e2-e003-42e9-9b75-ac26cf772afe"
      unitRef="usd">39753000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue
      contextRef="i56de818c0a5f4e8eacf53b04d2ab45e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzItNS0xLTEtMjg4MDU_e92d6522-edd1-42f2-add1-80cedf39d422"
      unitRef="usd">0</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue
      contextRef="i56de818c0a5f4e8eacf53b04d2ab45e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzItNy0xLTEtMjg4MDU_8f0e5ad9-3955-41ba-8184-ae69646b7f1b"
      unitRef="usd">0</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue
      contextRef="i56de818c0a5f4e8eacf53b04d2ab45e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzItOS0xLTEtMjg4MDU_3c08319f-95a3-48da-8c3f-23f3d0a33816"
      unitRef="usd">0</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i56de818c0a5f4e8eacf53b04d2ab45e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzItMTMtMS0xLTI4ODA1_82adc4a3-65a5-45f2-b330-d8714e7fda28"
      unitRef="usd">58665000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue
      contextRef="i0502b4b2a04743ed970b8454fdfdf9e1_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzUtMS0xLTEtMjg4MDU_e5edc429-c267-4077-8e9d-74c7d6520943"
      unitRef="usd">2802000</us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue
      contextRef="i0502b4b2a04743ed970b8454fdfdf9e1_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzUtMy0xLTEtMjg4MDU_e1b2b7a6-0ac5-46d5-88b5-8f1354503df4"
      unitRef="usd">16077000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue
      contextRef="i0502b4b2a04743ed970b8454fdfdf9e1_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzUtNS0xLTEtMjg4MDU_c7e189a2-6f28-4110-abea-f7c8c1fef897"
      unitRef="usd">0</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue
      contextRef="i0502b4b2a04743ed970b8454fdfdf9e1_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzUtNy0xLTEtMjg4MDU_0f641fa7-5a8c-47a8-9d8a-55479ddfdc9d"
      unitRef="usd">0</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue
      contextRef="i0502b4b2a04743ed970b8454fdfdf9e1_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzUtOS0xLTEtMjg4MDU_3db88bc7-c052-4e82-9b16-856e86a81b08"
      unitRef="usd">0</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i0502b4b2a04743ed970b8454fdfdf9e1_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzUtMTMtMS0xLTI4ODA1_10a585b4-5136-476c-94b5-581e05fdc5ab"
      unitRef="usd">18879000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue
      contextRef="i2e6e3966f74d464096c8781827b91619_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzYtMS0xLTEtMzQwMjA_2ad5fc54-45a0-44dd-a28d-92363d3f59fd"
      unitRef="usd">4998000</us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue
      contextRef="i2e6e3966f74d464096c8781827b91619_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzYtMy0xLTEtMzQwMjA_2c5f85e8-4dd0-43ed-980d-c731097af633"
      unitRef="usd">641000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue
      contextRef="i2e6e3966f74d464096c8781827b91619_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzYtNS0xLTEtMzQwMjA_b0318fe9-b32a-49c4-86d2-bd8e3c23ba8b"
      unitRef="usd">0</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue
      contextRef="i2e6e3966f74d464096c8781827b91619_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzYtNy0xLTEtMzQwMjA_a370b57d-319b-4aa8-9703-d480bef29724"
      unitRef="usd">0</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue
      contextRef="i2e6e3966f74d464096c8781827b91619_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzYtOS0xLTEtMzQwMjA_e3efa303-1af6-4387-96cc-8aa3537a8cde"
      unitRef="usd">0</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i2e6e3966f74d464096c8781827b91619_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzYtMTMtMS0xLTM0MDIw_130bea27-f39e-41bd-a120-4907d712b1c4"
      unitRef="usd">5639000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue
      contextRef="i1efe35c9a2da425e8ed4586c7a51eda9_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzYtMS0xLTEtMjg4MDU_ce6f61d1-1d98-4993-9dfe-607bebc87d03"
      unitRef="usd">0</us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue
      contextRef="i1efe35c9a2da425e8ed4586c7a51eda9_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzYtMy0xLTEtMjg4MDU_d74b248e-6633-42a5-8e02-cc435e62edef"
      unitRef="usd">0</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue
      contextRef="i1efe35c9a2da425e8ed4586c7a51eda9_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzYtNS0xLTEtMjg4MDU_d04b6d9b-5ca9-489a-b9a0-4a38f1b69ffb"
      unitRef="usd">1052000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue
      contextRef="i1efe35c9a2da425e8ed4586c7a51eda9_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzYtNy0xLTEtMjg4MDU_91816614-26b5-4bc7-bcc0-f18e838854c4"
      unitRef="usd">1067000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue
      contextRef="i1efe35c9a2da425e8ed4586c7a51eda9_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzYtOS0xLTEtMjg4MDU_03e6dff0-ee75-43d9-b4a3-939ef80d9c35"
      unitRef="usd">0</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i1efe35c9a2da425e8ed4586c7a51eda9_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzYtMTMtMS0xLTI4ODA1_d244d9d7-c4f1-43f8-9655-734e144fbd21"
      unitRef="usd">2119000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzgtMS0xLTEtMjg4MDU_2003c41f-08f6-4ff1-b89e-29c448d5f6d5"
      unitRef="usd">137455000</us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzgtMy0xLTEtMjg4MDU_6649c90f-e47e-48d5-8a82-903add648926"
      unitRef="usd">285172000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzgtNS0xLTEtMjg4MDU_e8b61776-2d89-4f19-a967-5bf28525c36e"
      unitRef="usd">181712000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzgtNy0xLTEtMjg4MDU_62d714dc-1fbb-446a-8b6f-21f158a531e7"
      unitRef="usd">73515000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzgtOS0xLTEtMjg4MDU_edee9a86-a6d3-4876-a82b-1b986d06ee3d"
      unitRef="usd">43349000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzgtMTMtMS0xLTI4ODA1_2aa8bf68-b9cd-4030-8e4d-e6a318cd1c00"
      unitRef="usd">721203000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:InventoryDisclosureTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTgvZnJhZzo3MzFkN2YyN2FiMGY0OThmOWYzMzg1ZDQwMjRmM2YwYS90ZXh0cmVnaW9uOjczMWQ3ZjI3YWIwZjQ5OGY5ZjMzODVkNDAyNGYzZjBhXzQwMQ_2090da37-f376-4dfa-b0b6-668f2913a97d">Inventories&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Inventories consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:70.935%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.516%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.517%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;div&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="9" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December&#160;31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Raw materials&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;50,452&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;26,800&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Work-in-process&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;5,293&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,780&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Finished goods&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;57,357&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;29,250&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;113,102&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;60,830&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;The Company recorded provisions for excess and obsolete inventories of $2,573,000 and $9,908,000 in 2021 and 2020, respectively, which reduced the carrying value of the inventories to their net realizable value. The higher provisions in 2020 took into account the global economic conditions resulting from the COVID-19 pandemic.</us-gaap:InventoryDisclosureTextBlock>
    <us-gaap:ScheduleOfInventoryCurrentTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTgvZnJhZzo3MzFkN2YyN2FiMGY0OThmOWYzMzg1ZDQwMjRmM2YwYS90ZXh0cmVnaW9uOjczMWQ3ZjI3YWIwZjQ5OGY5ZjMzODVkNDAyNGYzZjBhXzM5OQ_195bb782-05d6-4fb4-a086-9dc30a40a10b">&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Inventories consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:70.935%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.516%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.517%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;div&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="9" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December&#160;31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Raw materials&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;50,452&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;26,800&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Work-in-process&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;5,293&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,780&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Finished goods&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;57,357&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;29,250&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;113,102&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;60,830&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfInventoryCurrentTableTextBlock>
    <us-gaap:InventoryRawMaterialsNetOfReserves
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTgvZnJhZzo3MzFkN2YyN2FiMGY0OThmOWYzMzg1ZDQwMjRmM2YwYS90YWJsZToxNzQyMWM5ZDA0YWE0MzQyODBiNWY3NGJmNjk1NjgyMS90YWJsZXJhbmdlOjE3NDIxYzlkMDRhYTQzNDI4MGI1Zjc0YmY2OTU2ODIxXzItMS0xLTEtMjg4MDU_362960b2-a0e5-4497-abaa-0148321c8ef3"
      unitRef="usd">50452000</us-gaap:InventoryRawMaterialsNetOfReserves>
    <us-gaap:InventoryRawMaterialsNetOfReserves
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTgvZnJhZzo3MzFkN2YyN2FiMGY0OThmOWYzMzg1ZDQwMjRmM2YwYS90YWJsZToxNzQyMWM5ZDA0YWE0MzQyODBiNWY3NGJmNjk1NjgyMS90YWJsZXJhbmdlOjE3NDIxYzlkMDRhYTQzNDI4MGI1Zjc0YmY2OTU2ODIxXzItMy0xLTEtMjg4MDU_4daaeb74-f846-4040-84f0-25bfd76c41d7"
      unitRef="usd">26800000</us-gaap:InventoryRawMaterialsNetOfReserves>
    <us-gaap:InventoryWorkInProcessNetOfReserves
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTgvZnJhZzo3MzFkN2YyN2FiMGY0OThmOWYzMzg1ZDQwMjRmM2YwYS90YWJsZToxNzQyMWM5ZDA0YWE0MzQyODBiNWY3NGJmNjk1NjgyMS90YWJsZXJhbmdlOjE3NDIxYzlkMDRhYTQzNDI4MGI1Zjc0YmY2OTU2ODIxXzMtMS0xLTEtMjg4MDU_543e365e-5ee2-4f6f-9b1d-58ecc70ee672"
      unitRef="usd">5293000</us-gaap:InventoryWorkInProcessNetOfReserves>
    <us-gaap:InventoryWorkInProcessNetOfReserves
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTgvZnJhZzo3MzFkN2YyN2FiMGY0OThmOWYzMzg1ZDQwMjRmM2YwYS90YWJsZToxNzQyMWM5ZDA0YWE0MzQyODBiNWY3NGJmNjk1NjgyMS90YWJsZXJhbmdlOjE3NDIxYzlkMDRhYTQzNDI4MGI1Zjc0YmY2OTU2ODIxXzMtMy0xLTEtMjg4MDU_5a9e49ea-f726-4d74-9dc9-a4de707b7efa"
      unitRef="usd">4780000</us-gaap:InventoryWorkInProcessNetOfReserves>
    <us-gaap:InventoryFinishedGoodsNetOfReserves
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTgvZnJhZzo3MzFkN2YyN2FiMGY0OThmOWYzMzg1ZDQwMjRmM2YwYS90YWJsZToxNzQyMWM5ZDA0YWE0MzQyODBiNWY3NGJmNjk1NjgyMS90YWJsZXJhbmdlOjE3NDIxYzlkMDRhYTQzNDI4MGI1Zjc0YmY2OTU2ODIxXzQtMS0xLTEtMjg4MDU_f5453093-c3f5-41c0-8702-2f116ae119b8"
      unitRef="usd">57357000</us-gaap:InventoryFinishedGoodsNetOfReserves>
    <us-gaap:InventoryFinishedGoodsNetOfReserves
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTgvZnJhZzo3MzFkN2YyN2FiMGY0OThmOWYzMzg1ZDQwMjRmM2YwYS90YWJsZToxNzQyMWM5ZDA0YWE0MzQyODBiNWY3NGJmNjk1NjgyMS90YWJsZXJhbmdlOjE3NDIxYzlkMDRhYTQzNDI4MGI1Zjc0YmY2OTU2ODIxXzQtMy0xLTEtMjg4MDU_63fc365f-aa7e-4435-ae85-4885cc442822"
      unitRef="usd">29250000</us-gaap:InventoryFinishedGoodsNetOfReserves>
    <us-gaap:InventoryNet
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTgvZnJhZzo3MzFkN2YyN2FiMGY0OThmOWYzMzg1ZDQwMjRmM2YwYS90YWJsZToxNzQyMWM5ZDA0YWE0MzQyODBiNWY3NGJmNjk1NjgyMS90YWJsZXJhbmdlOjE3NDIxYzlkMDRhYTQzNDI4MGI1Zjc0YmY2OTU2ODIxXzUtMS0xLTEtMjg4MDU_921c1ca8-02ea-4a71-be4b-3eb52de9ef65"
      unitRef="usd">113102000</us-gaap:InventoryNet>
    <us-gaap:InventoryNet
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTgvZnJhZzo3MzFkN2YyN2FiMGY0OThmOWYzMzg1ZDQwMjRmM2YwYS90YWJsZToxNzQyMWM5ZDA0YWE0MzQyODBiNWY3NGJmNjk1NjgyMS90YWJsZXJhbmdlOjE3NDIxYzlkMDRhYTQzNDI4MGI1Zjc0YmY2OTU2ODIxXzUtMy0xLTEtMjg4MDU_cd078009-c1ec-443f-a145-ce7fb916cb42"
      unitRef="usd">60830000</us-gaap:InventoryNet>
    <cgnx:ExcessAndObsoleteInventoryCharges
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTgvZnJhZzo3MzFkN2YyN2FiMGY0OThmOWYzMzg1ZDQwMjRmM2YwYS90ZXh0cmVnaW9uOjczMWQ3ZjI3YWIwZjQ5OGY5ZjMzODVkNDAyNGYzZjBhXzE1NQ_d93f5058-b887-4330-8c10-9a32e1263e4c"
      unitRef="usd">2573000</cgnx:ExcessAndObsoleteInventoryCharges>
    <cgnx:ExcessAndObsoleteInventoryCharges
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTgvZnJhZzo3MzFkN2YyN2FiMGY0OThmOWYzMzg1ZDQwMjRmM2YwYS90ZXh0cmVnaW9uOjczMWQ3ZjI3YWIwZjQ5OGY5ZjMzODVkNDAyNGYzZjBhXzE2Mg_211bb1e2-e02f-4cf4-8c01-62a6a1ea810b"
      unitRef="usd">9908000</cgnx:ExcessAndObsoleteInventoryCharges>
    <us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90ZXh0cmVnaW9uOjg2Y2Y0ZjhiNzdmYTRjMTE4MjNmOTUzM2ZhNmUwZjdmXzcxNw_106c5e35-8e13-411f-87bc-c1421d43bdf7">Property, Plant, and Equipment&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Property, plant, and equipment consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:70.935%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.516%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.517%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December&#160;31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Land&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;3,951&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,951&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Buildings&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;24,533&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;24,533&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Building improvements&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;47,886&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;45,978&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Leasehold improvements&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;10,436&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;12,682&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Computer hardware and software&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;50,748&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;58,162&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Manufacturing test equipment&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;30,562&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;29,816&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Furniture and fixtures&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;6,449&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,372&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;174,565&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;181,494&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Less: accumulated depreciation&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(97,019)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(102,321)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;77,546&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;79,173&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;The Company disposed of property, plant, and equipment with a cost basis of $20,647,000 and accumulated depreciation of $20,614,000 in 2021, resulting in a loss of $33,000. The Company disposed of property, plant, and equipment with a cost basis of $26,829,000 and accumulated depreciation of $24,977,000 in 2020, resulting in a loss of $1,852,000. Disposals in 2020 included leasehold improvements and other assets associated with office closures as a part of the Company's 2020 restructuring plan (refer to Note 22).</us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock>
    <us-gaap:PropertyPlantAndEquipmentTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90ZXh0cmVnaW9uOjg2Y2Y0ZjhiNzdmYTRjMTE4MjNmOTUzM2ZhNmUwZjdmXzcyMQ_7a7898ac-2608-4781-a40d-dd3d81ad1739">&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Property, plant, and equipment consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:70.935%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.516%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.517%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December&#160;31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Land&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;3,951&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,951&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Buildings&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;24,533&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;24,533&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Building improvements&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;47,886&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;45,978&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Leasehold improvements&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;10,436&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;12,682&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Computer hardware and software&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;50,748&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;58,162&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Manufacturing test equipment&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;30,562&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;29,816&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Furniture and fixtures&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;6,449&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,372&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;174,565&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;181,494&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Less: accumulated depreciation&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(97,019)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(102,321)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;77,546&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;79,173&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:PropertyPlantAndEquipmentTextBlock>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="id5d7726e056e4214aa7f49e065353761_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzItMS0xLTEtMjg4MDU_a92daba6-3159-40bc-ab03-a05abde88673"
      unitRef="usd">3951000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i64fc80d231e947aa9bf222b2de427dac_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzItMy0xLTEtMjg4MDU_2dc5d592-4f23-4bdb-b62a-4903c10b4fb9"
      unitRef="usd">3951000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i8bbd57d8b5e24e379260a83a26e0335d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzMtMS0xLTEtMjg4MDU_89ed991e-254a-4926-91e0-40cd4dcc0435"
      unitRef="usd">24533000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i6c11c5f296d94cb8b215d81fb2599862_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzMtMy0xLTEtMjg4MDU_d2a5f81d-8bbb-498c-b0a2-b66a4e31d7d5"
      unitRef="usd">24533000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i941a6d85ef5e4db6887a4477c54ad5ec_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzQtMS0xLTEtMjg4MDU_0ed0c8fe-ec2b-4d81-829d-3ebc06921f22"
      unitRef="usd">47886000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="iaa0e107732624743b8b9116c079cf534_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzQtMy0xLTEtMjg4MDU_e84b473e-9634-484e-beba-e1d9662b251b"
      unitRef="usd">45978000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="ifa4fc42921044fb2acd09f06fc702f0e_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzUtMS0xLTEtMjg4MDU_4932d8c7-8b47-4b57-851b-b6159ad29fb0"
      unitRef="usd">10436000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i783fdc7f101e437ca76e266767bbed79_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzUtMy0xLTEtMjg4MDU_b174e8d0-99e3-45e4-99b9-b6b4de227a6c"
      unitRef="usd">12682000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i93a793acd6604354bfdeb7a098a7ab7c_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzYtMS0xLTEtMjg4MDU_612412be-08be-4743-8cff-1e1b6d14b4b6"
      unitRef="usd">50748000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i82d6f2a16b9647c5a4153885f8b16d0f_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzYtMy0xLTEtMjg4MDU_3f149155-242c-4d33-9251-75c237e409d0"
      unitRef="usd">58162000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i237f0e88a14e4c138cf770014c3cff20_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzctMS0xLTEtMjg4MDU_4388da7e-14a9-4266-a13c-4eb90970be82"
      unitRef="usd">30562000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="ib4078ec246234f17861cbe7d06d41e4b_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzctMy0xLTEtMjg4MDU_3b3641e3-d713-4a3e-bf78-259db21323d3"
      unitRef="usd">29816000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i72196343338a4ad09f7dac2538d4ed3b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzgtMS0xLTEtMjg4MDU_d5ffadfc-33c8-4e34-a394-888db9a0919c"
      unitRef="usd">6449000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i22b7a4443157492c859ccb73ff921a37_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzgtMy0xLTEtMjg4MDU_5777a430-bfa4-4e97-af5f-0c8ede204bd7"
      unitRef="usd">6372000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzktMS0xLTEtMjg4MDU_edfa9659-cbb9-4bd1-b75b-d2fa87c85ad0"
      unitRef="usd">174565000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzktMy0xLTEtMjg4MDU_ade19d7c-a59e-40cb-b2ad-4ed75cfb27d5"
      unitRef="usd">181494000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzEwLTEtMS0xLTI4ODA1_e914058d-dbf9-4604-af63-064067d53eb7"
      unitRef="usd">97019000</us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment>
    <us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzEwLTMtMS0xLTI4ODA1_e831e4e2-b0ca-4295-8805-7d686b7a77bb"
      unitRef="usd">102321000</us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzExLTEtMS0xLTI4ODA1_a899c9d8-8ef5-4267-87bc-76de2a67e9e4"
      unitRef="usd">77546000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzExLTMtMS0xLTI4ODA1_2d3379b4-1aa5-44a1-846d-a063d877b676"
      unitRef="usd">79173000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentDisposals
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90ZXh0cmVnaW9uOjg2Y2Y0ZjhiNzdmYTRjMTE4MjNmOTUzM2ZhNmUwZjdmXzE5Ng_3498cd67-7d2c-4387-b6c2-800f7d65fb24"
      unitRef="usd">20647000</us-gaap:PropertyPlantAndEquipmentDisposals>
    <us-gaap:AccumulatedDepreciationDepletionAndAmortizationSaleOfPropertyPlantAndEquipment1
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90ZXh0cmVnaW9uOjg2Y2Y0ZjhiNzdmYTRjMTE4MjNmOTUzM2ZhNmUwZjdmXzIzMQ_d5fe4fce-acce-4a72-bf44-0614f09e7acf"
      unitRef="usd">20614000</us-gaap:AccumulatedDepreciationDepletionAndAmortizationSaleOfPropertyPlantAndEquipment1>
    <us-gaap:GainLossOnDispositionOfAssets1
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90ZXh0cmVnaW9uOjg2Y2Y0ZjhiNzdmYTRjMTE4MjNmOTUzM2ZhNmUwZjdmXzI2Ng_b01b9f51-b958-4d80-87b4-b6de4fb36cc3"
      unitRef="usd">-33000</us-gaap:GainLossOnDispositionOfAssets1>
    <us-gaap:PropertyPlantAndEquipmentDisposals
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90ZXh0cmVnaW9uOjg2Y2Y0ZjhiNzdmYTRjMTE4MjNmOTUzM2ZhNmUwZjdmXzQ0Ng_b057d24c-6439-4589-8984-7f1e85f823dc"
      unitRef="usd">26829000</us-gaap:PropertyPlantAndEquipmentDisposals>
    <us-gaap:AccumulatedDepreciationDepletionAndAmortizationSaleOfPropertyPlantAndEquipment1
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90ZXh0cmVnaW9uOjg2Y2Y0ZjhiNzdmYTRjMTE4MjNmOTUzM2ZhNmUwZjdmXzQ4MQ_5f57d2d8-a6ef-4e41-b403-f2850d6b770d"
      unitRef="usd">24977000</us-gaap:AccumulatedDepreciationDepletionAndAmortizationSaleOfPropertyPlantAndEquipment1>
    <us-gaap:GainLossOnDispositionOfAssets1
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90ZXh0cmVnaW9uOjg2Y2Y0ZjhiNzdmYTRjMTE4MjNmOTUzM2ZhNmUwZjdmXzUxNg_04126adc-ba59-4cb4-a188-385316aa1b9c"
      unitRef="usd">-1852000</us-gaap:GainLossOnDispositionOfAssets1>
    <us-gaap:OperatingLeasesOfLessorDisclosureTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzMyMzA_5d3e1aa3-6cc7-4495-a274-bd3763772e91">Leases&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company's leases are primarily leased properties across different worldwide locations where the Company conducts its operations. All of these leases are classified as operating leases. Certain leases may contain options to extend or terminate the lease at the Company's sole discretion. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;As of December 31, 2021, there were no options to terminate that were accounted for in the determination of the lease term for outstanding leases, and one option to extend that was accounted for in the determination of the lease term for one of the Company's outstanding leases. As of December 31, 2020, there was one option to terminate that was accounted for in the determination of the lease term for one of the Company's outstanding leases, and no options to extend that were accounted for in the determination of the lease term for outstanding leases. Certain leases contain leasehold improvement incentives, retirement obligations, escalating clauses, rent holidays, and variable payments tied to a consumer price index. There were no restrictions or covenants for the outstanding leases as of December 31, 2021 or 2020.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The total operating lease expense was $8,180,000 in both 2021 and 2020, and $6,893,000 in 2019. The total operating lease cash payments were $8,225,000, $8,009,000, and $6,530,000 in 2021, 2020, and 2019, respectively. The total lease expense for leases with a term of twelve months or less for which the Company elected not to recognize a lease asset or lease liability was $154,000, $123,000, and $275,000 in 2021, 2020, and 2019, respectively.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Future operating lease cash payments are as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:14pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:82.648%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:2.728%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.224%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%;text-decoration:underline"&gt;Year Ended December&#160;31,&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;Amount &lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;8,508&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2023&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,883&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2024&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,842&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2025&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,081&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2026&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,346&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Thereafter&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,069&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;27,729&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The discounted present value of the future lease cash payments resulted in a lease liability of $25,581,000 and $26,230,000 as of December 31, 2021 and 2020, respectively. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:4pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In December 2021, the Company entered into a lease for a 65,000 square-foot building in Southborough, Massachusetts for a term of ten years to serve as a new distribution center for customers in the Americas. The transition of the current distribution center to the new Southborough facility is expected to take place during the first half of 2022. The Company will have the right and option to extend the term of this lease for an additional period of five years, commencing upon the expiration of the original ten-year term. As of December 31, 2021, this lease had not yet commenced, and therefore was not yet recorded on the Consolidated Balance Sheets, nor did it create any significant rights and obligations. Future payment obligations associated with this lease, which are not included in the future operating lease cash payments table above, total $10,239,000, of which $670,000 is payable in 2022. The Company did not have any leases that had not yet commenced but that created significant rights and obligations as of December 31, 2020.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:4pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The weighted-average discount rate was 3.4% and 4.0% for the leases outstanding as of December 31, 2021 and December 31, 2020, respectively. The weighted-average remaining lease term was 5.1 years for the leases outstanding as of both December 31, 2021 and 2020, respectively.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Management closed eleven leased offices in 2020, prior to the end of their lease terms, as a part of a restructuring plan (refer to Note 22). The carrying value of the lease assets associated with these offices was reduced to zero, resulting in operating lease asset impairment charges of $3,427,000 in 2020 that are included in "Restructuring &lt;/span&gt;&lt;/div&gt;charges" on the Consolidated Statements of Operations. Remaining lease liability obligations associated with the early contract terminations totaled $1,717,000 and $2,877,000 as of December 31, 2021 and 2020, respectively, and are included in "Operating lease liabilities" on the Consolidated Balance Sheets. The Company did not record impairment charges related to operating lease assets in 2021 or 2019.The Company owns a building adjacent to its corporate headquarters that was partially occupied by a tenant during a portion of 2020, and for the entirety of 2019. This lease terminated prior to the end of its lease term during the second quarter of 2020, and the Company is now fully occupying this building for its operations. Annual rental income totaled $77,000 in 2020 and $311,000 in 2019.</us-gaap:OperatingLeasesOfLessorDisclosureTextBlock>
    <us-gaap:OperatingLeaseExpense
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzEwOTk1MTE2MzYxOTI_aee0995f-fb63-4495-8f60-a6175643a2e2"
      unitRef="usd">8180000</us-gaap:OperatingLeaseExpense>
    <us-gaap:OperatingLeaseExpense
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzEwOTk1MTE2MzYxOTI_bc5e8d0a-a7df-4875-8b56-d1d60655ef25"
      unitRef="usd">8180000</us-gaap:OperatingLeaseExpense>
    <us-gaap:OperatingLeaseExpense
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzEwOTk1MTE2MzgxOTg_50996761-5536-46aa-969f-61d39c527ebf"
      unitRef="usd">6893000</us-gaap:OperatingLeaseExpense>
    <us-gaap:OperatingLeasePayments
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzEwOTk1MTE2MzYyMDQ_1c26ab40-92c7-482e-adc9-28a78e899f35"
      unitRef="usd">8225000</us-gaap:OperatingLeasePayments>
    <us-gaap:OperatingLeasePayments
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzEwOTk1MTE2MzYyMTU_2072c3f4-6980-41c1-85f9-8494f6e2bbf0"
      unitRef="usd">8009000</us-gaap:OperatingLeasePayments>
    <us-gaap:OperatingLeasePayments
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzEwOTk1MTE2MzgyMzQ_10688617-b36b-4dbc-9cc2-3a9156e09c52"
      unitRef="usd">6530000</us-gaap:OperatingLeasePayments>
    <cgnx:OperatingLeaseExpenseNoLiabilityOrAssetRecognized
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzEzNjU_cd2e678e-dfa0-41b4-a0ab-c1bbb00396e1"
      unitRef="usd">154000</cgnx:OperatingLeaseExpenseNoLiabilityOrAssetRecognized>
    <cgnx:OperatingLeaseExpenseNoLiabilityOrAssetRecognized
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzEzNzI_cbe10a65-6abe-4e42-9858-7856c6add09b"
      unitRef="usd">123000</cgnx:OperatingLeaseExpenseNoLiabilityOrAssetRecognized>
    <cgnx:OperatingLeaseExpenseNoLiabilityOrAssetRecognized
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzE2NDkyNjc0NDU4NTU_38ffdea0-fc79-40e6-956e-9c7ad506000f"
      unitRef="usd">275000</cgnx:OperatingLeaseExpenseNoLiabilityOrAssetRecognized>
    <us-gaap:LesseeOperatingLeaseLiabilityMaturityTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzMyMjc_6a13b40e-3f4e-4226-af24-68035304165a">&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Future operating lease cash payments are as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:14pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:82.648%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:2.728%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.224%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%;text-decoration:underline"&gt;Year Ended December&#160;31,&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;Amount &lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;8,508&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2023&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,883&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2024&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,842&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2025&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,081&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2026&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,346&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Thereafter&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,069&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;27,729&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:LesseeOperatingLeaseLiabilityMaturityTableTextBlock>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90YWJsZTo5MDNiY2Y1N2ZmNzc0NTM0OTJiYjg2NjFkYTVlMjQwZi90YWJsZXJhbmdlOjkwM2JjZjU3ZmY3NzQ1MzQ5MmJiODY2MWRhNWUyNDBmXzEtMi0xLTEtMjg4MDU_76a8a229-d5a6-4f58-b461-ac6083e610e2"
      unitRef="usd">8508000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearTwo
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90YWJsZTo5MDNiY2Y1N2ZmNzc0NTM0OTJiYjg2NjFkYTVlMjQwZi90YWJsZXJhbmdlOjkwM2JjZjU3ZmY3NzQ1MzQ5MmJiODY2MWRhNWUyNDBmXzItMi0xLTEtMjg4MDU_591f1430-6274-4568-8f09-2749566faf7e"
      unitRef="usd">6883000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearTwo>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearThree
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90YWJsZTo5MDNiY2Y1N2ZmNzc0NTM0OTJiYjg2NjFkYTVlMjQwZi90YWJsZXJhbmdlOjkwM2JjZjU3ZmY3NzQ1MzQ5MmJiODY2MWRhNWUyNDBmXzMtMi0xLTEtMjg4MDU_7f146e50-75c6-484b-a089-4e7167b860ca"
      unitRef="usd">3842000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearThree>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFour
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90YWJsZTo5MDNiY2Y1N2ZmNzc0NTM0OTJiYjg2NjFkYTVlMjQwZi90YWJsZXJhbmdlOjkwM2JjZjU3ZmY3NzQ1MzQ5MmJiODY2MWRhNWUyNDBmXzQtMi0xLTEtMjg4MDU_3aeef98e-4bc2-4416-8739-53fe1f06d0bd"
      unitRef="usd">2081000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFour>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFive
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90YWJsZTo5MDNiY2Y1N2ZmNzc0NTM0OTJiYjg2NjFkYTVlMjQwZi90YWJsZXJhbmdlOjkwM2JjZjU3ZmY3NzQ1MzQ5MmJiODY2MWRhNWUyNDBmXzUtMi0xLTEtMjg4MDU_7ed047bf-caba-4a0c-b9c7-29bc3a204caa"
      unitRef="usd">1346000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFive>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90YWJsZTo5MDNiY2Y1N2ZmNzc0NTM0OTJiYjg2NjFkYTVlMjQwZi90YWJsZXJhbmdlOjkwM2JjZjU3ZmY3NzQ1MzQ5MmJiODY2MWRhNWUyNDBmXzYtMi0xLTEtMjg4MDU_0e439078-78e2-45f3-8ad2-fe766a7ee808"
      unitRef="usd">5069000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDue
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90YWJsZTo5MDNiY2Y1N2ZmNzc0NTM0OTJiYjg2NjFkYTVlMjQwZi90YWJsZXJhbmdlOjkwM2JjZjU3ZmY3NzQ1MzQ5MmJiODY2MWRhNWUyNDBmXzctMi0xLTEtMjg4MDU_38b85afa-2151-4d77-9c6b-2d65ccc419a3"
      unitRef="usd">27729000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDue>
    <us-gaap:OperatingLeaseLiability
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzE2MDY_07bad96c-34c7-4703-b0e2-f41d34aab86d"
      unitRef="usd">25581000</us-gaap:OperatingLeaseLiability>
    <us-gaap:OperatingLeaseLiability
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzE2MTM_b8137e3e-4b6a-41c0-8871-99f85a542939"
      unitRef="usd">26230000</us-gaap:OperatingLeaseLiability>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDue
      contextRef="i9680e81eb9994576b1c178a64360acd9_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzEwOTk1MTE2Mzc4MTk_97ceec66-ed6e-4e2c-bdc3-50f1002273dc"
      unitRef="usd">10239000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDue>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths
      contextRef="i9680e81eb9994576b1c178a64360acd9_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzEwOTk1MTE2Mzc4MzY_1973f0c3-8df8-4ffd-bdc5-e88fc7dfbf9c"
      unitRef="usd">670000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths>
    <us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzE4NDM_6b5b09be-57d8-4b71-920b-4e2a4e931996"
      unitRef="number">0.034</us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent>
    <us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzE4NTA_0a1238a2-15d2-4c9d-9e15-37e09681b244"
      unitRef="number">0.040</us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent>
    <us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzE5NzA_83748d2d-d3e6-47e5-9500-e0cff3cfee9e">P5Y1M6D</us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1>
    <us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzE5NzA_d83a9a98-8505-43b3-9b3e-a1700fd90765">P5Y1M6D</us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1>
    <cgnx:OperatingLeaseRightOfUseAssetCarryingValueOfImpairedAsset
      contextRef="ic0eb9a7570944c1ab9168006bb2aa1e2_I20200628"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzIyOTM_26b8980d-a55e-4281-8bbc-99e667d14f07"
      unitRef="usd">0</cgnx:OperatingLeaseRightOfUseAssetCarryingValueOfImpairedAsset>
    <us-gaap:OperatingLeaseImpairmentLoss
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzIzNTQ_630deb3f-1183-46b2-ae1a-ec8a3b8d0cca"
      unitRef="usd">3427000</us-gaap:OperatingLeaseImpairmentLoss>
    <us-gaap:OperatingLeaseLiability
      contextRef="i955fae1ce0f246f2a6383d7e4314f3aa_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzE2NDkyNjc0NDY0NzQ_3cf1e676-c963-4e59-863d-518840a48e15"
      unitRef="usd">1717000</us-gaap:OperatingLeaseLiability>
    <us-gaap:OperatingLeaseLiability
      contextRef="idaa85ffc8fe24348a2c3c89ee7ee05da_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzI2MjE_9419ae6f-9806-464b-a111-65b73cee6f46"
      unitRef="usd">2877000</us-gaap:OperatingLeaseLiability>
    <us-gaap:OperatingLeaseLeaseIncome
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzE2NDkyNjc0NDY1MzM_e88c1b21-d43f-417d-bde9-ae807c0bad48"
      unitRef="usd">77000</us-gaap:OperatingLeaseLeaseIncome>
    <us-gaap:OperatingLeaseLeaseIncome
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzE2NDkyNjc0NDY1NTU_aefd855d-9111-4b0c-a074-81b77391f205"
      unitRef="usd">311000</us-gaap:OperatingLeaseLeaseIncome>
    <us-gaap:GoodwillDisclosureTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzAvZnJhZzpiMmM0ZmJjMzk0MDc0ZjhkOTNhMmU3ZmMwOGExOTJhMS90ZXh0cmVnaW9uOmIyYzRmYmMzOTQwNzRmOGQ5M2EyZTdmYzA4YTE5MmExXzE0MDQ_fc9a1149-72dd-4abe-b935-441ddd0d7026">Goodwill&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The changes in the carrying value of goodwill were as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:83.380%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.688%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;Amount&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2019&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;243,445&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Sualab Co., Ltd. purchase price adjustment (refer to Note 21)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1,004)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign exchange rate changes&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,637&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;244,078&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&#160;Foreign exchange rate changes&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(2,365)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;241,713&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;For its 2021 annual analysis of goodwill, management elected to perform a qualitative assessment. Based on this assessment, management believes it is more likely than not that the fair value of the reporting unit exceeds its carrying value. The Company did not record impairment charges related to goodwill in 2021, 2020, or 2019.&lt;/span&gt;&lt;/div&gt;</us-gaap:GoodwillDisclosureTextBlock>
    <us-gaap:ScheduleOfGoodwillTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzAvZnJhZzpiMmM0ZmJjMzk0MDc0ZjhkOTNhMmU3ZmMwOGExOTJhMS90ZXh0cmVnaW9uOmIyYzRmYmMzOTQwNzRmOGQ5M2EyZTdmYzA4YTE5MmExXzE0MDE_613172ed-56b3-4da8-a204-deb08605e95c">&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The changes in the carrying value of goodwill were as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:83.380%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.688%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;Amount&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2019&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;243,445&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Sualab Co., Ltd. purchase price adjustment (refer to Note 21)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1,004)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign exchange rate changes&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,637&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;244,078&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&#160;Foreign exchange rate changes&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(2,365)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;241,713&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfGoodwillTextBlock>
    <us-gaap:Goodwill
      contextRef="ia991b13c7b074439964a26d579235ee4_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzAvZnJhZzpiMmM0ZmJjMzk0MDc0ZjhkOTNhMmU3ZmMwOGExOTJhMS90YWJsZTo5ZDRmNWMwNDRjN2I0NmI5YTBlMmQ1MDhmNmY3NTRmNC90YWJsZXJhbmdlOjlkNGY1YzA0NGM3YjQ2YjlhMGUyZDUwOGY2Zjc1NGY0XzEtMi0xLTEtMjg4MDU_73899dd2-7e12-4639-9cde-f0a0cfeaf928"
      unitRef="usd">243445000</us-gaap:Goodwill>
    <us-gaap:GoodwillOtherIncreaseDecrease
      contextRef="i30b6dbba7a294a05a1de3af16074b12b_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzAvZnJhZzpiMmM0ZmJjMzk0MDc0ZjhkOTNhMmU3ZmMwOGExOTJhMS90YWJsZTo5ZDRmNWMwNDRjN2I0NmI5YTBlMmQ1MDhmNmY3NTRmNC90YWJsZXJhbmdlOjlkNGY1YzA0NGM3YjQ2YjlhMGUyZDUwOGY2Zjc1NGY0XzMtMi0xLTEtMzAxMDE_f8e8c355-ccb1-4a0a-9f55-a1160dea3659"
      unitRef="usd">-1004000</us-gaap:GoodwillOtherIncreaseDecrease>
    <us-gaap:GoodwillForeignCurrencyTranslationGainLoss
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzAvZnJhZzpiMmM0ZmJjMzk0MDc0ZjhkOTNhMmU3ZmMwOGExOTJhMS90YWJsZTo5ZDRmNWMwNDRjN2I0NmI5YTBlMmQ1MDhmNmY3NTRmNC90YWJsZXJhbmdlOjlkNGY1YzA0NGM3YjQ2YjlhMGUyZDUwOGY2Zjc1NGY0XzMtMi0xLTEtMjg4MDU_b584fccb-3680-49ee-8963-e2fc51c0043d"
      unitRef="usd">1637000</us-gaap:GoodwillForeignCurrencyTranslationGainLoss>
    <us-gaap:Goodwill
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzAvZnJhZzpiMmM0ZmJjMzk0MDc0ZjhkOTNhMmU3ZmMwOGExOTJhMS90YWJsZTo5ZDRmNWMwNDRjN2I0NmI5YTBlMmQ1MDhmNmY3NTRmNC90YWJsZXJhbmdlOjlkNGY1YzA0NGM3YjQ2YjlhMGUyZDUwOGY2Zjc1NGY0XzUtMi0xLTEtMjg4MDU_38eb8b3e-f826-473d-8b67-983c1cf22bb8"
      unitRef="usd">244078000</us-gaap:Goodwill>
    <us-gaap:GoodwillForeignCurrencyTranslationGainLoss
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzAvZnJhZzpiMmM0ZmJjMzk0MDc0ZjhkOTNhMmU3ZmMwOGExOTJhMS90YWJsZTo5ZDRmNWMwNDRjN2I0NmI5YTBlMmQ1MDhmNmY3NTRmNC90YWJsZXJhbmdlOjlkNGY1YzA0NGM3YjQ2YjlhMGUyZDUwOGY2Zjc1NGY0XzctMi0xLTEtMjg4MDU_c3eaeff6-723c-4d61-92fb-5370fcc4cddb"
      unitRef="usd">-2365000</us-gaap:GoodwillForeignCurrencyTranslationGainLoss>
    <us-gaap:Goodwill
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzAvZnJhZzpiMmM0ZmJjMzk0MDc0ZjhkOTNhMmU3ZmMwOGExOTJhMS90YWJsZTo5ZDRmNWMwNDRjN2I0NmI5YTBlMmQ1MDhmNmY3NTRmNC90YWJsZXJhbmdlOjlkNGY1YzA0NGM3YjQ2YjlhMGUyZDUwOGY2Zjc1NGY0XzgtMi0xLTEtMjg4MDU_f616ef16-adac-41c3-ba65-308fdbfa34bc"
      unitRef="usd">241713000</us-gaap:Goodwill>
    <us-gaap:IntangibleAssetsDisclosureTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90ZXh0cmVnaW9uOjUwMmVjOTVkZmEyMTQ1N2E5ZWI3MWZiN2I4OGE3OTc1XzIwNzk_65b47c84-b5a8-49ba-ab2a-770b993db98a">Intangible Assets&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Intangible assets consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.561%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:51.176%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.318%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.318%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.320%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Gross&lt;br/&gt;Carrying&lt;br/&gt;Value&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Accumulated&lt;br/&gt;Amortization&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Net&lt;br/&gt;Carrying&lt;br/&gt;Value&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Distribution networks&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;38,060&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;38,060&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Completed technologies&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;24,217&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;15,234&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;8,983&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Customer relationships&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;10,578&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;7,891&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;2,687&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Non-compete agreements&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;710&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;492&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;218&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Trademarks&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;110&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;110&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;73,675&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;61,787&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;11,888&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr style="height:9pt"&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:3pt double #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:3pt double #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:3pt double #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Gross&lt;br/&gt;Carrying&lt;br/&gt;Value&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Accumulated&lt;br/&gt;Amortization&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Net&lt;br/&gt;Carrying&lt;br/&gt;Value&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Distribution networks&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;38,060&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;38,060&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Completed technologies&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;24,217&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;12,397&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;11,820&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Customer relationships&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;10,578&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;7,160&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,418&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Non-compete agreements&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;710&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;436&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;274&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Trademarks&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;110&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;67&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;43&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;73,675&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;58,120&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;15,555&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The adverse impact of the COVID-19 pandemic on our business in 2020 triggered a review of long-lived assets, including intangible assets, for potential impairment during the second quarter of 2020. Based on this assessment, management concluded that certain of the Company's finite-lived intangible assets failed the recoverability test, and recorded impairment charges for these assets equal to the amount by which their carrying value exceeded their fair value. The Company also measured the fair value and recorded an impairment charge for its indefinite-lived intangible asset related to in-process technologies. The fair values were established, with the assistance of an outside valuation advisor, using the income approach based on a discounted cash flow model that estimated future revenue streams and expenses attributable to those revenue streams provided by management.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;This review resulted in intangible asset impairment charges totaling $19,571,000 in the second quarter of 2020, primarily related to lower projected cash flows from the technologies and customer relationships acquired from Sualab Co. Ltd. ("Sualab") as a result of the deteriorating global economic conditions from the COVID-19 pandemic. Completed technologies, in-process technologies, and customer relationships acquired from Sualab were impaired in the amounts of $10,070,000, $5,900,000, and $3,382,000, respectively. In addition, customer relationships acquired from EnShape GmbH that had a gross carrying value of $447,000 and accumulated amortization of $228,000 on the measurement date were reduced to zero, resulting in an impairment charge of $219,000. The Company did not record impairment charges related to intangible assets in 2021 or 2019.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Estimated amortization expense for each of the five succeeding fiscal years and thereafter is as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:81.623%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.445%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%;text-decoration:underline"&gt;Year Ended December&#160;31,&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Amount&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,275&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2023&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,594&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2024&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,080&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2025&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,757&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2026&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,452&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Thereafter&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;730&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;11,888&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:IntangibleAssetsDisclosureTextBlock>
    <us-gaap:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90ZXh0cmVnaW9uOjUwMmVjOTVkZmEyMTQ1N2E5ZWI3MWZiN2I4OGE3OTc1XzIwODA_45057871-67d8-42e8-b50a-3c6985d38da3">&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Intangible assets consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.561%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:51.176%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.318%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.318%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.320%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Gross&lt;br/&gt;Carrying&lt;br/&gt;Value&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Accumulated&lt;br/&gt;Amortization&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Net&lt;br/&gt;Carrying&lt;br/&gt;Value&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Distribution networks&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;38,060&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;38,060&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Completed technologies&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;24,217&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;15,234&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;8,983&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Customer relationships&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;10,578&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;7,891&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;2,687&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Non-compete agreements&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;710&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;492&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;218&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Trademarks&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;110&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;110&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;73,675&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;61,787&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;11,888&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr style="height:9pt"&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:3pt double #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:3pt double #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:3pt double #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Gross&lt;br/&gt;Carrying&lt;br/&gt;Value&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Accumulated&lt;br/&gt;Amortization&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Net&lt;br/&gt;Carrying&lt;br/&gt;Value&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Distribution networks&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;38,060&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;38,060&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Completed technologies&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;24,217&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;12,397&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;11,820&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Customer relationships&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;10,578&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;7,160&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,418&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Non-compete agreements&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;710&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;436&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;274&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Trademarks&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;110&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;67&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;43&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;73,675&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;58,120&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;15,555&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i9077befdd9a24efd88f7a65bb72737eb_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzEtMS0xLTEtMjg4MDU_40590751-1db4-45c8-957c-3de5d167fdd8"
      unitRef="usd">38060000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i9077befdd9a24efd88f7a65bb72737eb_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzEtMy0xLTEtMjg4MDU_74705fbf-e234-4806-983e-41076fdb6a77"
      unitRef="usd">38060000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i9077befdd9a24efd88f7a65bb72737eb_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzEtNS0xLTEtMjg4MDU_2ddadbda-211b-4a3b-8014-fe97bf500497"
      unitRef="usd">0</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i79c23c3a546a49569d45604d210eade1_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzItMS0xLTEtMjg4MDU_2f66ccfb-0859-4328-ba08-466dea5d8b77"
      unitRef="usd">24217000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i79c23c3a546a49569d45604d210eade1_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzItMy0xLTEtMjg4MDU_b89cdf7c-5369-4ea7-999a-f50ffef1e64d"
      unitRef="usd">15234000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i79c23c3a546a49569d45604d210eade1_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzItNS0xLTEtMjg4MDU_b74b4b78-2424-4c85-8684-d15f50f12eb2"
      unitRef="usd">8983000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i10f501ebc93e427c829a4d3c79634b1f_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzMtMS0xLTEtMjg4MDU_1b400925-a9c5-41fa-9fc9-d33a805ea721"
      unitRef="usd">10578000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i10f501ebc93e427c829a4d3c79634b1f_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzMtMy0xLTEtMjg4MDU_5d7f8671-c240-4ac0-9fd4-38dd90014648"
      unitRef="usd">7891000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i10f501ebc93e427c829a4d3c79634b1f_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzMtNS0xLTEtMjg4MDU_f50e0f88-8b4d-49ce-84f1-38ed703c39b0"
      unitRef="usd">2687000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="iea58649cc4eb4b5fa55f83fe19cc0796_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzUtMS0xLTEtMjg4MDU_017d16b4-9072-4519-b551-1fdb09f30a0e"
      unitRef="usd">710000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="iea58649cc4eb4b5fa55f83fe19cc0796_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzUtMy0xLTEtMjg4MDU_d8329dcb-65fd-4f76-ac8d-8c8d32894dfb"
      unitRef="usd">492000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="iea58649cc4eb4b5fa55f83fe19cc0796_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzUtNS0xLTEtMjg4MDU_f975f3bd-bb92-4b61-96d6-b3638c5edf7a"
      unitRef="usd">218000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="ie2a20d1e0bed4733afa945949392815a_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzYtMS0xLTEtMjg4MDU_65836a5e-237a-4176-bf66-76a91f02e14f"
      unitRef="usd">110000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="ie2a20d1e0bed4733afa945949392815a_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzYtMy0xLTEtMjg4MDU_0969407f-8182-4359-91fc-4c8bca299afe"
      unitRef="usd">110000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="ie2a20d1e0bed4733afa945949392815a_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzYtNS0xLTEtMjg4MDU_a6f7f650-6064-494a-aeef-c8b8afe033f3"
      unitRef="usd">0</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzctMS0xLTEtMjg4MDU_f0280a96-f6a3-4714-b14f-de6a9db8bcad"
      unitRef="usd">73675000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzctMy0xLTEtMjg4MDU_303818b6-c412-4b07-9cb8-ee5abbc6c6d9"
      unitRef="usd">61787000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:IntangibleAssetsNetIncludingGoodwill
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzctNS0xLTEtMjg4MDU_1e4bb53e-688d-4072-bea2-82d505e6ba89"
      unitRef="usd">11888000</us-gaap:IntangibleAssetsNetIncludingGoodwill>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i497cc41f6abb47b884fd3672c59e3cb5_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzEwLTEtMS0xLTI4ODA1_01dfc9a1-ed18-49ed-91f3-b86f10686f8f"
      unitRef="usd">38060000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i497cc41f6abb47b884fd3672c59e3cb5_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzEwLTMtMS0xLTI4ODA1_7b77c409-5f18-4fee-b6bf-c4a5a076269a"
      unitRef="usd">38060000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i497cc41f6abb47b884fd3672c59e3cb5_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzEwLTUtMS0xLTI4ODA1_848796e7-d599-4aef-9f3a-0d18e3138b44"
      unitRef="usd">0</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="if1cc1bfb37c149759d1841760856c173_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzExLTEtMS0xLTI4ODA1_6d46cd26-b11d-47ec-9ca5-3374e576731e"
      unitRef="usd">24217000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="if1cc1bfb37c149759d1841760856c173_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzExLTMtMS0xLTI4ODA1_7b422589-d8be-46d8-9c18-66c96e32f2d6"
      unitRef="usd">12397000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="if1cc1bfb37c149759d1841760856c173_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzExLTUtMS0xLTI4ODA1_1cc67b1a-40e8-4ec5-bf3f-e6c1c9403d30"
      unitRef="usd">11820000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="if88693d9f63d42edaaeff2d08d6a8a9b_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzEyLTEtMS0xLTI4ODA1_acc1088c-9c7f-4d7c-a27b-06a4b3667ac3"
      unitRef="usd">10578000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="if88693d9f63d42edaaeff2d08d6a8a9b_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzEyLTMtMS0xLTI4ODA1_38482000-f0d7-4055-9599-79b7b85df637"
      unitRef="usd">7160000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="if88693d9f63d42edaaeff2d08d6a8a9b_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzEyLTUtMS0xLTI4ODA1_578214a9-ff50-436f-b369-48714da16166"
      unitRef="usd">3418000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="ie0c7309d4e304594823af30b7f8c6732_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzE0LTEtMS0xLTI4ODA1_334fba67-b908-4780-83ea-331f2c6b2a14"
      unitRef="usd">710000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="ie0c7309d4e304594823af30b7f8c6732_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzE0LTMtMS0xLTI4ODA1_deaf0964-01f9-48e2-8e8b-0c020cd11ff2"
      unitRef="usd">436000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="ie0c7309d4e304594823af30b7f8c6732_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzE0LTUtMS0xLTI4ODA1_dc4f9955-e6ae-4263-a301-035dda3b8d1e"
      unitRef="usd">274000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="icc1eb3d1f8994634b4304b31764535fe_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzE1LTEtMS0xLTI4ODA1_49ffe7e3-6c98-42e1-b8f3-cc0af6e3c884"
      unitRef="usd">110000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="icc1eb3d1f8994634b4304b31764535fe_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzE1LTMtMS0xLTI4ODA1_893fdf00-c2da-4eb4-a2a3-4cf5d38d55fa"
      unitRef="usd">67000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="icc1eb3d1f8994634b4304b31764535fe_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzE1LTUtMS0xLTI4ODA1_5292ece9-319a-488a-ab36-ac5ed195d334"
      unitRef="usd">43000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzE2LTEtMS0xLTI4ODA1_beb2d2be-5221-484a-8192-9f2f0ac2faa8"
      unitRef="usd">73675000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzE2LTMtMS0xLTI4ODA1_e955401b-bf98-43ba-b048-3d05128d1108"
      unitRef="usd">58120000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzE2LTUtMS0xLTI4ODA1_10327e9c-e38c-40e3-a439-435f0ab1af79"
      unitRef="usd">15555000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill
      contextRef="ib02ea70179e047879c445fd8d0e9275f_D20200330-20200628"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90ZXh0cmVnaW9uOjUwMmVjOTVkZmEyMTQ1N2E5ZWI3MWZiN2I4OGE3OTc1XzEwMzc_f18dc054-73ea-4a92-b4ab-34859881e23e"
      unitRef="usd">19571000</us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill>
    <us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill
      contextRef="i5694e3e1d7f2467781e7455fe169436f_D20200330-20200628"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90ZXh0cmVnaW9uOjUwMmVjOTVkZmEyMTQ1N2E5ZWI3MWZiN2I4OGE3OTc1XzE0MjY_d9f130a9-401e-46f3-95cb-ef777d6c1f51"
      unitRef="usd">10070000</us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill>
    <us-gaap:ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill
      contextRef="ia44f7d0ad1ef42c39fdbc370ebfbe435_D20200330-20200628"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90ZXh0cmVnaW9uOjUwMmVjOTVkZmEyMTQ1N2E5ZWI3MWZiN2I4OGE3OTc1XzE0MzA_43329db6-618e-4ce9-b01a-daf02fb30f2b"
      unitRef="usd">5900000</us-gaap:ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill>
    <us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill
      contextRef="i709ffb5b1f3f4e8a8d0cae96d0146633_D20200330-20200628"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90ZXh0cmVnaW9uOjUwMmVjOTVkZmEyMTQ1N2E5ZWI3MWZiN2I4OGE3OTc1XzE0Mzg_0a145e11-dd7a-47dd-b147-ca94007fe27f"
      unitRef="usd">3382000</us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill
      contextRef="ib58b9b72d04944dca738439418889e81_I20200526"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90ZXh0cmVnaW9uOjUwMmVjOTVkZmEyMTQ1N2E5ZWI3MWZiN2I4OGE3OTc1XzE1NTQ_36c13a9d-4b8b-4d01-a629-868ccb93fe23"
      unitRef="usd">447000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="ib58b9b72d04944dca738439418889e81_I20200526"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90ZXh0cmVnaW9uOjUwMmVjOTVkZmEyMTQ1N2E5ZWI3MWZiN2I4OGE3OTc1XzE1ODk_f405ccb0-132f-42f8-b522-2e7c3863ef8b"
      unitRef="usd">228000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill
      contextRef="i632328a9aece45169ee9a65a27b7de43_I20200628"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90ZXh0cmVnaW9uOjUwMmVjOTVkZmEyMTQ1N2E5ZWI3MWZiN2I4OGE3OTc1XzE2MzI_f1617cbf-18b4-4a9d-bac0-efc7a23a16af"
      unitRef="usd">0</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill>
    <us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill
      contextRef="i868c84ba01b343969f185bfae762ea09_D20200330-20200628"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90ZXh0cmVnaW9uOjUwMmVjOTVkZmEyMTQ1N2E5ZWI3MWZiN2I4OGE3OTc1XzE2NzM_7144fba9-2182-41df-8b9f-13c458bb09dc"
      unitRef="usd">219000</us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill>
    <us-gaap:ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90ZXh0cmVnaW9uOjUwMmVjOTVkZmEyMTQ1N2E5ZWI3MWZiN2I4OGE3OTc1XzIwODI_5c2dbb57-ba1b-49ba-bc2d-0e65c5b02264">&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Estimated amortization expense for each of the five succeeding fiscal years and thereafter is as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:81.623%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.445%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%;text-decoration:underline"&gt;Year Ended December&#160;31,&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Amount&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,275&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2023&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,594&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2024&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,080&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2025&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,757&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2026&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,452&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Thereafter&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;730&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;11,888&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTpmYjk4YjllZTA1NmI0MmEyYmY3NWZmMDZmN2UzZWYxYy90YWJsZXJhbmdlOmZiOThiOWVlMDU2YjQyYTJiZjc1ZmYwNmY3ZTNlZjFjXzEtMi0xLTEtMjg4MDU_ccefed9c-25dd-443d-92ee-06c5b2b4d866"
      unitRef="usd">3275000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTpmYjk4YjllZTA1NmI0MmEyYmY3NWZmMDZmN2UzZWYxYy90YWJsZXJhbmdlOmZiOThiOWVlMDU2YjQyYTJiZjc1ZmYwNmY3ZTNlZjFjXzItMi0xLTEtMjg4MDU_5e3b8165-e48c-4a99-85e0-3cf487d2c267"
      unitRef="usd">2594000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearThree
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTpmYjk4YjllZTA1NmI0MmEyYmY3NWZmMDZmN2UzZWYxYy90YWJsZXJhbmdlOmZiOThiOWVlMDU2YjQyYTJiZjc1ZmYwNmY3ZTNlZjFjXzMtMi0xLTEtMjg4MDU_0968c85a-b5aa-4058-9dab-61f0f23dda28"
      unitRef="usd">2080000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearThree>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearFour
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTpmYjk4YjllZTA1NmI0MmEyYmY3NWZmMDZmN2UzZWYxYy90YWJsZXJhbmdlOmZiOThiOWVlMDU2YjQyYTJiZjc1ZmYwNmY3ZTNlZjFjXzQtMi0xLTEtMjg4MDU_39732aa3-7790-421d-ab29-5fb9673c0a79"
      unitRef="usd">1757000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearFour>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearFive
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTpmYjk4YjllZTA1NmI0MmEyYmY3NWZmMDZmN2UzZWYxYy90YWJsZXJhbmdlOmZiOThiOWVlMDU2YjQyYTJiZjc1ZmYwNmY3ZTNlZjFjXzUtMi0xLTEtMjg4MDU_27a7c362-130f-4fd8-a5e9-2f18ed690327"
      unitRef="usd">1452000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearFive>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTpmYjk4YjllZTA1NmI0MmEyYmY3NWZmMDZmN2UzZWYxYy90YWJsZXJhbmdlOmZiOThiOWVlMDU2YjQyYTJiZjc1ZmYwNmY3ZTNlZjFjXzYtMi0xLTEtMjg4MDU_b057110e-c8f4-43c7-ab0d-9202d9aefc62"
      unitRef="usd">730000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTpmYjk4YjllZTA1NmI0MmEyYmY3NWZmMDZmN2UzZWYxYy90YWJsZXJhbmdlOmZiOThiOWVlMDU2YjQyYTJiZjc1ZmYwNmY3ZTNlZjFjXzctMi0xLTEtMjg4MDU_7d2c7a16-4938-4646-9d62-38523127c783"
      unitRef="usd">11888000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:AccountsPayableAndAccruedLiabilitiesDisclosureTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90ZXh0cmVnaW9uOmJkNWNmN2Q0ZjYzYjRhM2RhYzU4ZDBiYzI3ZTk0MTc3XzE2Nw_81e016a8-2000-4986-94aa-39a122194531">Accrued Expenses&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Accrued expenses consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:64.002%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.908%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:16.057%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December&#160;31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Incentive compensation&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;37,917&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;28,935&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Salaries and payroll taxes&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;8,519&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;7,911&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign retirement obligations&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;7,572&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,886&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Warranty obligations&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;5,427&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,406&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Vacation&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;4,686&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,641&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Other&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;28,311&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;24,485&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;92,432&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;77,264&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The changes in the warranty obligation were as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:81.209%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:16.591%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2019&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,713&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Provisions for warranties issued during the period&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,463&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Fulfillment of warranty obligations&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(2,770)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,406&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Provisions for warranties issued during the period&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,256&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Fulfillment of warranty obligations&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(3,235)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;5,427&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:AccountsPayableAndAccruedLiabilitiesDisclosureTextBlock>
    <us-gaap:ScheduleOfAccruedLiabilitiesTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90ZXh0cmVnaW9uOmJkNWNmN2Q0ZjYzYjRhM2RhYzU4ZDBiYzI3ZTk0MTc3XzE2OQ_911b827c-4529-4df2-bd15-8c618f7a641a">&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Accrued expenses consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:64.002%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.908%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:16.057%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December&#160;31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Incentive compensation&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;37,917&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;28,935&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Salaries and payroll taxes&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;8,519&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;7,911&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign retirement obligations&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;7,572&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,886&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Warranty obligations&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;5,427&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,406&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Vacation&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;4,686&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,641&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Other&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;28,311&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;24,485&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;92,432&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;77,264&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfAccruedLiabilitiesTableTextBlock>
    <us-gaap:AccruedBonusesCurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTo3YmYzYTVmNzBlZTg0MmQ4YjVjNDUzMjJkMGY4OWNmMy90YWJsZXJhbmdlOjdiZjNhNWY3MGVlODQyZDhiNWM0NTMyMmQwZjg5Y2YzXzItMS0xLTEtMjg4MDU_d4f30770-ab94-4b36-b27e-bedbd93446b6"
      unitRef="usd">37917000</us-gaap:AccruedBonusesCurrent>
    <us-gaap:AccruedBonusesCurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTo3YmYzYTVmNzBlZTg0MmQ4YjVjNDUzMjJkMGY4OWNmMy90YWJsZXJhbmdlOjdiZjNhNWY3MGVlODQyZDhiNWM0NTMyMmQwZjg5Y2YzXzItMy0xLTEtMjg4MDU_6d6947fc-1158-4cda-aa3e-e82fa7451edf"
      unitRef="usd">28935000</us-gaap:AccruedBonusesCurrent>
    <us-gaap:AccruedSalariesCurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTo3YmYzYTVmNzBlZTg0MmQ4YjVjNDUzMjJkMGY4OWNmMy90YWJsZXJhbmdlOjdiZjNhNWY3MGVlODQyZDhiNWM0NTMyMmQwZjg5Y2YzXzMtMS0xLTEtMjg4MDU_d139d362-158f-4b18-afe1-5332b4332738"
      unitRef="usd">8519000</us-gaap:AccruedSalariesCurrent>
    <us-gaap:AccruedSalariesCurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTo3YmYzYTVmNzBlZTg0MmQ4YjVjNDUzMjJkMGY4OWNmMy90YWJsZXJhbmdlOjdiZjNhNWY3MGVlODQyZDhiNWM0NTMyMmQwZjg5Y2YzXzMtMy0xLTEtMjg4MDU_9a4c379e-6bac-4c8e-b4e4-a4ee41be0299"
      unitRef="usd">7911000</us-gaap:AccruedSalariesCurrent>
    <cgnx:RetirementAllowance
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTo3YmYzYTVmNzBlZTg0MmQ4YjVjNDUzMjJkMGY4OWNmMy90YWJsZXJhbmdlOjdiZjNhNWY3MGVlODQyZDhiNWM0NTMyMmQwZjg5Y2YzXzQtMS0xLTEtMjg4MDU_442b14c1-899c-41f7-806f-c50f0c881ce3"
      unitRef="usd">7572000</cgnx:RetirementAllowance>
    <cgnx:RetirementAllowance
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTo3YmYzYTVmNzBlZTg0MmQ4YjVjNDUzMjJkMGY4OWNmMy90YWJsZXJhbmdlOjdiZjNhNWY3MGVlODQyZDhiNWM0NTMyMmQwZjg5Y2YzXzQtMy0xLTEtMjg4MDU_481acf88-9c59-4be5-a1f8-9199307f02a9"
      unitRef="usd">6886000</cgnx:RetirementAllowance>
    <us-gaap:ProductWarrantyAccrualClassifiedCurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTo3YmYzYTVmNzBlZTg0MmQ4YjVjNDUzMjJkMGY4OWNmMy90YWJsZXJhbmdlOjdiZjNhNWY3MGVlODQyZDhiNWM0NTMyMmQwZjg5Y2YzXzUtMS0xLTEtMjg4MDU_1248b834-aa76-4aeb-9c19-1164b1a81882"
      unitRef="usd">5427000</us-gaap:ProductWarrantyAccrualClassifiedCurrent>
    <us-gaap:ProductWarrantyAccrualClassifiedCurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTo3YmYzYTVmNzBlZTg0MmQ4YjVjNDUzMjJkMGY4OWNmMy90YWJsZXJhbmdlOjdiZjNhNWY3MGVlODQyZDhiNWM0NTMyMmQwZjg5Y2YzXzUtMy0xLTEtMjg4MDU_86ae142e-32f1-426f-9f75-08f8bdec638f"
      unitRef="usd">5406000</us-gaap:ProductWarrantyAccrualClassifiedCurrent>
    <us-gaap:AccruedVacationCurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTo3YmYzYTVmNzBlZTg0MmQ4YjVjNDUzMjJkMGY4OWNmMy90YWJsZXJhbmdlOjdiZjNhNWY3MGVlODQyZDhiNWM0NTMyMmQwZjg5Y2YzXzYtMS0xLTEtMjg4MDU_931f6150-55d4-4afc-9a0f-49ef23a54825"
      unitRef="usd">4686000</us-gaap:AccruedVacationCurrent>
    <us-gaap:AccruedVacationCurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTo3YmYzYTVmNzBlZTg0MmQ4YjVjNDUzMjJkMGY4OWNmMy90YWJsZXJhbmdlOjdiZjNhNWY3MGVlODQyZDhiNWM0NTMyMmQwZjg5Y2YzXzYtMy0xLTEtMjg4MDU_219ff97b-1cb2-4669-aca2-12c53ee1ed37"
      unitRef="usd">3641000</us-gaap:AccruedVacationCurrent>
    <us-gaap:OtherAccruedLiabilitiesCurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTo3YmYzYTVmNzBlZTg0MmQ4YjVjNDUzMjJkMGY4OWNmMy90YWJsZXJhbmdlOjdiZjNhNWY3MGVlODQyZDhiNWM0NTMyMmQwZjg5Y2YzXzctMS0xLTEtMjg4MDU_23c6cabd-9e1c-4de4-9d12-d99d95300a2d"
      unitRef="usd">28311000</us-gaap:OtherAccruedLiabilitiesCurrent>
    <us-gaap:OtherAccruedLiabilitiesCurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTo3YmYzYTVmNzBlZTg0MmQ4YjVjNDUzMjJkMGY4OWNmMy90YWJsZXJhbmdlOjdiZjNhNWY3MGVlODQyZDhiNWM0NTMyMmQwZjg5Y2YzXzctMy0xLTEtMjg4MDU_d723fdf7-5f2b-4ae8-9a86-5ed851fb9628"
      unitRef="usd">24485000</us-gaap:OtherAccruedLiabilitiesCurrent>
    <us-gaap:AccruedLiabilitiesCurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTo3YmYzYTVmNzBlZTg0MmQ4YjVjNDUzMjJkMGY4OWNmMy90YWJsZXJhbmdlOjdiZjNhNWY3MGVlODQyZDhiNWM0NTMyMmQwZjg5Y2YzXzgtMS0xLTEtMjg4MDU_4b18a828-9387-41a6-89e0-d6061c6af802"
      unitRef="usd">92432000</us-gaap:AccruedLiabilitiesCurrent>
    <us-gaap:AccruedLiabilitiesCurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTo3YmYzYTVmNzBlZTg0MmQ4YjVjNDUzMjJkMGY4OWNmMy90YWJsZXJhbmdlOjdiZjNhNWY3MGVlODQyZDhiNWM0NTMyMmQwZjg5Y2YzXzgtMy0xLTEtMjg4MDU_f3fb8080-e50b-4a5f-bf88-a7f08269295a"
      unitRef="usd">77264000</us-gaap:AccruedLiabilitiesCurrent>
    <us-gaap:ScheduleOfProductWarrantyLiabilityTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90ZXh0cmVnaW9uOmJkNWNmN2Q0ZjYzYjRhM2RhYzU4ZDBiYzI3ZTk0MTc3XzE3Mg_8f584d85-f1de-4c71-ba85-00fc99068759">&lt;div style="margin-top:4pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The changes in the warranty obligation were as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:81.209%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:16.591%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2019&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,713&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Provisions for warranties issued during the period&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,463&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Fulfillment of warranty obligations&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(2,770)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,406&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Provisions for warranties issued during the period&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,256&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Fulfillment of warranty obligations&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(3,235)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;5,427&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfProductWarrantyLiabilityTableTextBlock>
    <us-gaap:ProductWarrantyAccrual
      contextRef="ia991b13c7b074439964a26d579235ee4_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTpiM2UzMjUzZThiZTU0NjI1YmQ4ZjM1OTk5YmQ4ZmVhZC90YWJsZXJhbmdlOmIzZTMyNTNlOGJlNTQ2MjViZDhmMzU5OTliZDhmZWFkXzEtMS0xLTEtMjg4MDU_6c5b2bb9-5fa5-46a0-90d1-38bbbffbcb92"
      unitRef="usd">4713000</us-gaap:ProductWarrantyAccrual>
    <us-gaap:ProductWarrantyAccrualWarrantiesIssued
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTpiM2UzMjUzZThiZTU0NjI1YmQ4ZjM1OTk5YmQ4ZmVhZC90YWJsZXJhbmdlOmIzZTMyNTNlOGJlNTQ2MjViZDhmMzU5OTliZDhmZWFkXzItMS0xLTEtMjg4MDU_f7cb0ab1-84a7-4603-86c3-0e2a6314d7aa"
      unitRef="usd">3463000</us-gaap:ProductWarrantyAccrualWarrantiesIssued>
    <us-gaap:ProductWarrantyAccrualPayments
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTpiM2UzMjUzZThiZTU0NjI1YmQ4ZjM1OTk5YmQ4ZmVhZC90YWJsZXJhbmdlOmIzZTMyNTNlOGJlNTQ2MjViZDhmMzU5OTliZDhmZWFkXzMtMS0xLTEtMjg4MDU_5fecd4a0-9c44-4c57-b65a-a0acb7c6c153"
      unitRef="usd">2770000</us-gaap:ProductWarrantyAccrualPayments>
    <us-gaap:ProductWarrantyAccrual
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTpiM2UzMjUzZThiZTU0NjI1YmQ4ZjM1OTk5YmQ4ZmVhZC90YWJsZXJhbmdlOmIzZTMyNTNlOGJlNTQ2MjViZDhmMzU5OTliZDhmZWFkXzUtMS0xLTEtMjg4MDU_11662342-7a61-476c-abaf-7962dbb7d0a4"
      unitRef="usd">5406000</us-gaap:ProductWarrantyAccrual>
    <us-gaap:ProductWarrantyAccrualWarrantiesIssued
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTpiM2UzMjUzZThiZTU0NjI1YmQ4ZjM1OTk5YmQ4ZmVhZC90YWJsZXJhbmdlOmIzZTMyNTNlOGJlNTQ2MjViZDhmMzU5OTliZDhmZWFkXzYtMS0xLTEtMjg4MDU_6b30986c-8d67-4be2-a107-d3399dd35656"
      unitRef="usd">3256000</us-gaap:ProductWarrantyAccrualWarrantiesIssued>
    <us-gaap:ProductWarrantyAccrualPayments
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTpiM2UzMjUzZThiZTU0NjI1YmQ4ZjM1OTk5YmQ4ZmVhZC90YWJsZXJhbmdlOmIzZTMyNTNlOGJlNTQ2MjViZDhmMzU5OTliZDhmZWFkXzctMS0xLTEtMjg4MDU_f6859de1-3c3d-4e10-8e0a-39637dacfab8"
      unitRef="usd">3235000</us-gaap:ProductWarrantyAccrualPayments>
    <us-gaap:ProductWarrantyAccrual
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTpiM2UzMjUzZThiZTU0NjI1YmQ4ZjM1OTk5YmQ4ZmVhZC90YWJsZXJhbmdlOmIzZTMyNTNlOGJlNTQ2MjViZDhmMzU5OTliZDhmZWFkXzktMS0xLTEtMjg4MDU_92db4524-c5e7-4ad1-8e7f-b90fb4f1d390"
      unitRef="usd">5427000</us-gaap:ProductWarrantyAccrual>
    <us-gaap:CommitmentsAndContingenciesDisclosureTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzkvZnJhZzoxZTcxNTMxMTcxZDI0NjcyYjIwYzM2MDVjNzU3MDFiMi90ZXh0cmVnaW9uOjFlNzE1MzExNzFkMjQ2NzJiMjBjMzYwNWM3NTcwMWIyXzY3Nw_8767f61b-e7c6-4ff9-bc13-97b2d3a387c1">Commitments and Contingencies&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;As of December&#160;31, 2021, the Company had outstanding purchase orders totaling $100,750,000 to procure inventory from various vendors, due in part to higher inventory purchases in response to global supply chain constraints. Certain of these purchase orders may be canceled by the Company, subject to cancellation penalties. These purchase commitments relate primarily to expected sales in 2022.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;A significant portion of the Company's outstanding inventory purchase orders as of December&#160;31, 2021, as well as additional preauthorized commitments to procure strategic components based on the Company's expected customer demand, are placed with the Company's primary contract manufacturer for the Company's assembled products. The Company has the obligation to purchase any non-cancelable and non-returnable components that have been purchased by this contract manufacturer with the Company's preauthorization, when these components &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;have not been consumed within the period defined in the terms of the Company's agreement with this contract manufacturer. As a result of the terms of this agreement, the Company has purchased $19,448,000, $4,291,000, and $3,700,000 of inventory in 2021, 2020, and 2019, respectively, prior to the components being consumed by the contract manufacturer to produce the Company's assembled products. While the Company typically expects such purchased components to be used in future production of Cognex finished goods, these components are considered in the Company's reserve estimate for excess and obsolete inventory. Furthermore, the Company accrues for losses on commitments for the future purchase of non-cancelable and non-returnable components from this contract manufacturer at the time that circumstances, such as changes in demand, indicate that the value of the components may not be recoverable, the loss is probable, and management has the ability to reasonably estimate the amount of the loss.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Various claims and legal proceedings generally incidental to the normal course of business are pending or threatened on behalf of or against the Company. While we cannot predict the outcome of these matters, we believe that any liability arising from them will not have a material adverse effect on our financial position, liquidity, or results of operations.&lt;/span&gt;&lt;/div&gt;</us-gaap:CommitmentsAndContingenciesDisclosureTextBlock>
    <us-gaap:PurchaseCommitmentRemainingMinimumAmountCommitted
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzkvZnJhZzoxZTcxNTMxMTcxZDI0NjcyYjIwYzM2MDVjNzU3MDFiMi90ZXh0cmVnaW9uOjFlNzE1MzExNzFkMjQ2NzJiMjBjMzYwNWM3NTcwMWIyXzEwNw_d527a1f1-f18d-4092-a512-7f7d02f40809"
      unitRef="usd">100750000</us-gaap:PurchaseCommitmentRemainingMinimumAmountCommitted>
    <us-gaap:OtherInventoryPurchasedGoods
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzkvZnJhZzoxZTcxNTMxMTcxZDI0NjcyYjIwYzM2MDVjNzU3MDFiMi90ZXh0cmVnaW9uOjFlNzE1MzExNzFkMjQ2NzJiMjBjMzYwNWM3NTcwMWIyXzEwOTk1MTE2NDQ3MTk_218caec8-a204-467a-867f-42b04be9a95b"
      unitRef="usd">19448000</us-gaap:OtherInventoryPurchasedGoods>
    <us-gaap:OtherInventoryPurchasedGoods
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzkvZnJhZzoxZTcxNTMxMTcxZDI0NjcyYjIwYzM2MDVjNzU3MDFiMi90ZXh0cmVnaW9uOjFlNzE1MzExNzFkMjQ2NzJiMjBjMzYwNWM3NTcwMWIyXzEwOTk1MTE2NDQ3MzI_a2896703-6f4f-41a5-b1d9-9e14b5a774be"
      unitRef="usd">4291000</us-gaap:OtherInventoryPurchasedGoods>
    <us-gaap:OtherInventoryPurchasedGoods
      contextRef="ia991b13c7b074439964a26d579235ee4_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzkvZnJhZzoxZTcxNTMxMTcxZDI0NjcyYjIwYzM2MDVjNzU3MDFiMi90ZXh0cmVnaW9uOjFlNzE1MzExNzFkMjQ2NzJiMjBjMzYwNWM3NTcwMWIyXzEwOTk1MTE2NDQ3NDQ_1dd49c4e-b9bb-4fda-9ab5-a1bd020c4b70"
      unitRef="usd">3700000</us-gaap:OtherInventoryPurchasedGoods>
    <cgnx:IndemnificationProvisionsTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDUvZnJhZzo3YjIwZTU4Y2UyYjg0NTI1YTg3OGRmZjFkOWU1ZDhmNy90ZXh0cmVnaW9uOjdiMjBlNThjZTJiODQ1MjVhODc4ZGZmMWQ5ZTVkOGY3XzIzOTM_1d3e8448-7910-44af-9cae-4e416aa403f5">Indemnification Provisions&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Except as limited by Massachusetts law, the by-laws of the Company require it to indemnify certain current or former directors, officers, and employees of the Company against expenses incurred by them in connection with each proceeding in which he or she is involved as a result of serving or having served in certain capacities. Indemnification is not available with respect to a proceeding as to which it has been adjudicated that the person did not act in good faith in the reasonable belief that the action was in the best interests of the Company. The maximum potential amount of future payments the Company could be required to make under these provisions is unlimited. The Company has never incurred significant costs related to these indemnification provisions. As a result, the Company believes the estimated fair value of these provisions is not material.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In the ordinary course of business, the Company may accept standard limited indemnification provisions in connection with the sale of its products, whereby it indemnifies its customers for certain direct damages incurred in connection with third-party patent or other intellectual property infringement claims with respect to the use of the Company&#x2019;s products. The maximum potential amount of future payments the Company could be required to make under these provisions is generally subject to fixed monetary limits. The Company has never incurred significant costs to defend lawsuits or settle claims related to these indemnification provisions. As a result, the Company believes the estimated fair value of these provisions is not material.&lt;/span&gt;&lt;/div&gt;In the ordinary course of business, the Company also accepts limited indemnification provisions from time to time, whereby it indemnifies customers for certain direct damages incurred in connection with bodily injury and property damage arising from the use of the Company&#x2019;s products. The maximum potential amount of future payments the Company could be required to make under these provisions is generally limited and is likely recoverable under the Company&#x2019;s insurance policies. As a result of this coverage, and the fact that the Company has never incurred significant costs to defend lawsuits or settle claims related to these indemnification provisions, the Company believes the estimated fair value of these provisions is not material.</cgnx:IndemnificationProvisionsTextBlock>
    <us-gaap:DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90ZXh0cmVnaW9uOjJjOWE3YTkxZjc5OTRiZWRiNDBmMGM4MDU5N2VmMWRjXzE0MjY_2f2036ff-e5b9-4a24-8482-d1a12454bf79">Derivative InstrumentsThe Company&#x2019;s foreign currency risk management strategy is principally designed to mitigate the potential financial impact of changes in the value of transactions and balances denominated in foreign currencies resulting from changes in foreign currency exchange rates. The Company enters into economic hedges utilizing foreign currency forward contracts with maturities of up to 95 days to manage the exposure to fluctuations in foreign currency exchange rates arising primarily from foreign-denominated receivables and payables. The gains and losses on these derivatives are intended to be offset by the changes in the fair value of the assets and liabilities being hedged. These economic hedges are not designated as hedging instruments for hedge accounting treatment. &lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company had the following outstanding forward contracts (in thousands): &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:10pt;text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:47.291%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.765%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.180%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.180%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.354%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="6" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="6" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline"&gt;Currency&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline"&gt;Notional Value&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline"&gt;USD Equivalent&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline"&gt;Notional Value&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline"&gt;USD Equivalent&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height:9pt"&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="18" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:100%"&gt;Derivatives Not Designated as Hedging Instruments:&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Euro&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;65,000&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;73,748&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;50,000&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;61,342&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Chinese Renminbi&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;54,374&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;8,500&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Mexican Peso&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;140,000&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,842&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;155,000&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;7,776&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Japanese Yen&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;600,000&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,213&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;600,000&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,808&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;British Pound&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,370&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,552&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,675&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,287&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Hungarian Forint&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,355,000&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,155&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,330,000&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,494&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Canadian Dollar&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,480&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,167&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,285&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,010&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Korean Won&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,925,000&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,377&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Taiwanese Dollar&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;38,035&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,362&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Singapore Dollar&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,465&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,110&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Information regarding the fair value of the outstanding forward contracts was as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:10pt;text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.274%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.204%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.788%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.350%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.888%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.788%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.358%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="15" style="background-color:#ffffff;border-bottom:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Asset Derivatives&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="15" style="background-color:#ffffff;border-bottom:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Liability Derivatives&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height:14pt"&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" rowspan="2" style="background-color:#ffffff;border-bottom:1pt solid #000000;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Balance&lt;br/&gt;Sheet  Location&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="9" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Fair Value&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" rowspan="2" style="background-color:#ffffff;border-bottom:1pt solid #000000;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Balance&lt;br/&gt;Sheet   Location&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="9" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Fair Value&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height:24pt"&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="36" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:100%"&gt;Derivatives Not Designated as Hedging Instruments:&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Economic hedge forward contracts&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Prepaid expenses and other current assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;39&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;265&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Accrued expenses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;230&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;38&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the gross activity for all derivative assets and liabilities which were presented on a net basis on the Consolidated Balance Sheets due to the right of offset with each counterparty (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:14pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:18.108%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.826%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.562%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.826%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.709%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:17.814%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.562%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.394%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="15" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Asset Derivatives&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="15" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Liability Derivatives&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross amounts of recognized assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;39&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;265&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross amounts of recognized liabilities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;230&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;38&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross amounts offset&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross amounts offset&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Net amount of assets presented&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;39&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;265&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Net amount of liabilities presented&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;230&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;38&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Information regarding the effect of derivative instruments, net of the underlying exposure, on the consolidated financial statements was as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:10pt;text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:21.920%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:22.800%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.762%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.908%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.911%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr style="height:12pt"&gt;&lt;td colspan="3" rowspan="2" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" rowspan="2" style="background-color:#ffffff;border-bottom:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Location in Financial Statements&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" rowspan="2" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="15" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Year Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height:12pt"&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2019&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="24" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:100%"&gt;Derivatives Not Designated as Hedging Instruments:&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gains (losses) recognized in current operations&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign currency gain (loss)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;4,262&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(12,308)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,305&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock>
    <us-gaap:MaximumRemainingMaturityOfForeignCurrencyDerivatives1
      contextRef="i8403092ce78e46f287d80209e29e1af1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90ZXh0cmVnaW9uOjJjOWE3YTkxZjc5OTRiZWRiNDBmMGM4MDU5N2VmMWRjXzQxNg_293183f3-17e1-4e6e-a201-451e4bcde74c">P95D</us-gaap:MaximumRemainingMaturityOfForeignCurrencyDerivatives1>
    <us-gaap:ScheduleOfNotionalAmountsOfOutstandingDerivativePositionsTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90ZXh0cmVnaW9uOjJjOWE3YTkxZjc5OTRiZWRiNDBmMGM4MDU5N2VmMWRjXzEzOTI_730e6bbb-dce5-4c03-8765-bf0d81d679f4">&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company had the following outstanding forward contracts (in thousands): &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:10pt;text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:47.291%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.765%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.180%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.180%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.354%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="6" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="6" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline"&gt;Currency&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline"&gt;Notional Value&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline"&gt;USD Equivalent&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline"&gt;Notional Value&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline"&gt;USD Equivalent&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height:9pt"&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="18" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:100%"&gt;Derivatives Not Designated as Hedging Instruments:&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Euro&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;65,000&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;73,748&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;50,000&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;61,342&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Chinese Renminbi&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;54,374&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;8,500&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Mexican Peso&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;140,000&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,842&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;155,000&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;7,776&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Japanese Yen&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;600,000&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,213&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;600,000&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,808&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;British Pound&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,370&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,552&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,675&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,287&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Hungarian Forint&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,355,000&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,155&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,330,000&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,494&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Canadian Dollar&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,480&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,167&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,285&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,010&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Korean Won&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,925,000&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,377&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Taiwanese Dollar&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;38,035&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,362&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Singapore Dollar&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,465&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,110&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfNotionalAmountsOfOutstandingDerivativePositionsTableTextBlock>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i7cf72059f5c5494e9b87d60f4bc24e98_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzExLTEtMS0xLTI4ODA1_e4a65144-894f-4c07-99d4-53855c493b89"
      unitRef="eur">65000000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i7cf72059f5c5494e9b87d60f4bc24e98_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzExLTItMS0xLTI4ODA1_fd2f7eda-417f-424f-bc09-63080ef9d7b8"
      unitRef="usd">73748000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i46b3383699f54592b7ede9d54961aeb6_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzExLTQtMS0xLTI4ODA1_5b255012-d325-4cfc-b38d-1a317df24394"
      unitRef="eur">50000000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i46b3383699f54592b7ede9d54961aeb6_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzExLTUtMS0xLTI4ODA1_d72e1247-8c15-4c6b-9183-64f556f4b8e3"
      unitRef="usd">61342000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i00459c765246439382160d7274b765d4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzEyLTEtMS0xLTM0MTYy_8f584549-7540-4bfb-ad45-2aa77c0d3b4e"
      unitRef="cny">54374000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i00459c765246439382160d7274b765d4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzEyLTItMS0xLTM0MTYy_f5137f66-b31e-4895-92a4-0caffc9b2a75"
      unitRef="usd">8500000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="ia68a5da34e724a81893bf9be3e413d8c_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzEyLTQtMS0xLTM0MTYy_a4228872-173a-4a63-a77a-8aa4afbc830a"
      unitRef="cny">0</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="ia68a5da34e724a81893bf9be3e413d8c_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzEyLTUtMS0xLTM0MTYy_22ca8d14-82e9-43e6-97ef-c974931b03c1"
      unitRef="usd">0</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i7aa4b68725474c2cbfcfc2ff1cf9c610_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzEyLTEtMS0xLTI4ODA1_89a3f154-9326-49d8-82c1-3ab282a03d6d"
      unitRef="mxn">140000000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i7aa4b68725474c2cbfcfc2ff1cf9c610_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzEyLTItMS0xLTI4ODA1_cd558b2d-ee9e-42f5-bd85-3dbd2ac47a65"
      unitRef="usd">6842000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="iad34d6812e224628aaf77d2b49448365_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzEyLTQtMS0xLTI4ODA1_7fd3f6da-615b-4d3b-9158-0ae1b5e795d2"
      unitRef="mxn">155000000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="iad34d6812e224628aaf77d2b49448365_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzEyLTUtMS0xLTI4ODA1_4b89776b-a1ce-4b55-9c33-31bf763e2aa5"
      unitRef="usd">7776000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="ia4ac27b77f9347d59de048dc447103ab_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE0LTEtMS0xLTI4ODA1_04e7eb3b-1afd-4f15-9f8a-ac4d630593c9"
      unitRef="jpy">600000000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="ia4ac27b77f9347d59de048dc447103ab_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE0LTItMS0xLTI4ODA1_ce80e4d0-3d7c-40b0-a439-b24fb0e57ddc"
      unitRef="usd">5213000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i93ebcd0f4d05432abddab316785497af_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE0LTQtMS0xLTI4ODA1_883f7909-8bc1-44f0-85f7-9593f5346f9a"
      unitRef="jpy">600000000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i93ebcd0f4d05432abddab316785497af_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE0LTUtMS0xLTI4ODA1_0174aa99-ee9b-43e1-b152-72e3ada3018f"
      unitRef="usd">5808000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i71a8b16636c744088ae729b18fffb3af_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE1LTEtMS0xLTM0MDM5_5719ae79-7c43-4208-a69e-36410f8a1746"
      unitRef="gbp">3370000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i71a8b16636c744088ae729b18fffb3af_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE1LTItMS0xLTM0MDM5_b80d2e5e-d77c-49ad-a733-8a24e539de4b"
      unitRef="usd">4552000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i233b3e65c4014824a116028552a33e6b_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE1LTQtMS0xLTM0MDM5_af3f6841-2b6c-4c4b-af85-5bbf388894c8"
      unitRef="gbp">1675000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i233b3e65c4014824a116028552a33e6b_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE1LTUtMS0xLTM0MDM5_dfa1e18d-f0e8-4079-9bf1-b2bafe95522a"
      unitRef="usd">2287000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i4c575fbed7374c838d828cf6cf30c79c_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE1LTEtMS0xLTI4ODA1_c081db9d-6f61-4edd-9e18-adc75a5e1c78"
      unitRef="huf">1355000000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i4c575fbed7374c838d828cf6cf30c79c_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE1LTItMS0xLTI4ODA1_d00477da-b1c7-44c7-bb54-1e8aded286a0"
      unitRef="usd">4155000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i45f95c900587476f9a93fde30adfbaf1_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE1LTQtMS0xLTI4ODA1_dabb8f56-a81b-431d-888c-38d73cda4e27"
      unitRef="huf">1330000000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i45f95c900587476f9a93fde30adfbaf1_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE1LTUtMS0xLTI4ODA1_2094d454-0a66-4f61-a834-0a13df3d7a48"
      unitRef="usd">4494000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="iccaf5fac85854bc78b3b41877b85ec45_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE2LTEtMS0xLTI4ODA1_7e96c872-9481-4979-8fbb-99154db125b7"
      unitRef="cad">1480000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="iccaf5fac85854bc78b3b41877b85ec45_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE2LTItMS0xLTI4ODA1_f6dff2bf-27bf-4525-a047-aa08e3302c10"
      unitRef="usd">1167000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="iec122b031b4a4ca6b3633d5405753240_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE2LTQtMS0xLTI4ODA1_ddde978d-9f1a-40cd-beaf-6cbcf724ad3d"
      unitRef="cad">1285000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="iec122b031b4a4ca6b3633d5405753240_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE2LTUtMS0xLTI4ODA1_c44bf72c-f3b5-4dc6-924d-8085b11b31c6"
      unitRef="usd">1010000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="ibaaae7dc618d498782e79c903a2d481b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE4LTEtMS0xLTM0MDQ2_c2c3a189-379d-485a-abbb-4de6dbbcb3f9"
      unitRef="krw">0</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="ibaaae7dc618d498782e79c903a2d481b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE4LTItMS0xLTM0MDQ2_bb22115e-3db7-4b76-8755-5c636bfe61f5"
      unitRef="usd">0</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i497d9d68981c44ebb35250193a714eb7_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE4LTQtMS0xLTM0MDQ2_5fc2b09d-321e-403d-ab1b-889a940d51d4"
      unitRef="krw">6925000000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i497d9d68981c44ebb35250193a714eb7_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE4LTUtMS0xLTM0MDQ2_561892f6-8b13-4026-827a-1554df877637"
      unitRef="usd">6377000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i00a64ebf1e97460399ab2caa80730e9b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE3LTEtMS0xLTI4ODA1_6e8a812c-e270-4fa0-bb52-2d09142220cc"
      unitRef="twd">0</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i00a64ebf1e97460399ab2caa80730e9b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE3LTItMS0xLTI4ODA1_c6560529-fed6-42ea-ac88-5ee17c351855"
      unitRef="usd">0</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="ia7422c5d263441d58ee5c68d7143fed0_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE3LTQtMS0xLTI4ODA1_65b15d3a-e883-4d6b-9679-e67c54176e95"
      unitRef="twd">38035000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="ia7422c5d263441d58ee5c68d7143fed0_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE3LTUtMS0xLTI4ODA1_3c70c9b7-bff4-4c93-90f8-a37833112213"
      unitRef="usd">1362000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="if322716820c4489ab6cadd0ef3660c0a_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE4LTEtMS0xLTI4ODA1_14cbbf01-ad5d-4a1e-895c-5d14dadb4fa9"
      unitRef="sgd">0</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="if322716820c4489ab6cadd0ef3660c0a_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE4LTItMS0xLTI4ODA1_14109803-0389-46cc-bd44-fed5f7dc23f9"
      unitRef="usd">0</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i6c8355418cf24fdd81200d77b1ee46b9_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE4LTQtMS0xLTI4ODA1_f6b73c61-76a5-4011-b803-a2a79b6aedb1"
      unitRef="sgd">1465000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i6c8355418cf24fdd81200d77b1ee46b9_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE4LTUtMS0xLTI4ODA1_9e23008e-0423-451c-b082-893524928e6d"
      unitRef="usd">1110000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:ScheduleOfDerivativeInstrumentsInStatementOfFinancialPositionFairValueTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90ZXh0cmVnaW9uOjJjOWE3YTkxZjc5OTRiZWRiNDBmMGM4MDU5N2VmMWRjXzE0MDY_8a5fae9b-dc05-4dc5-a31f-17db875507fb">&lt;div style="margin-top:4pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Information regarding the fair value of the outstanding forward contracts was as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:10pt;text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.274%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.204%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.788%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.350%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.888%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.788%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.358%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="15" style="background-color:#ffffff;border-bottom:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Asset Derivatives&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="15" style="background-color:#ffffff;border-bottom:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Liability Derivatives&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height:14pt"&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" rowspan="2" style="background-color:#ffffff;border-bottom:1pt solid #000000;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Balance&lt;br/&gt;Sheet  Location&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="9" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Fair Value&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" rowspan="2" style="background-color:#ffffff;border-bottom:1pt solid #000000;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Balance&lt;br/&gt;Sheet   Location&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="9" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Fair Value&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height:24pt"&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="36" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:100%"&gt;Derivatives Not Designated as Hedging Instruments:&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Economic hedge forward contracts&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Prepaid expenses and other current assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;39&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;265&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Accrued expenses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;230&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;38&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfDerivativeInstrumentsInStatementOfFinancialPositionFairValueTextBlock>
    <us-gaap:DerivativeAssets
      contextRef="i9c4108ecbb154b9689e5bb60e97d0990_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTo0MTUzNjk0M2Q2OWI0YTI2OTI2MGI3ZDI0ZjQ4ZGU4MS90YWJsZXJhbmdlOjQxNTM2OTQzZDY5YjRhMjY5MjYwYjdkMjRmNDhkZTgxXzYtMy0xLTEtMjg4MDU_390c26f4-bfb0-44e7-92b9-2869422a93c5"
      unitRef="usd">39000</us-gaap:DerivativeAssets>
    <us-gaap:DerivativeAssets
      contextRef="if647a88887404ad0929e10c5f5dee470_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTo0MTUzNjk0M2Q2OWI0YTI2OTI2MGI3ZDI0ZjQ4ZGU4MS90YWJsZXJhbmdlOjQxNTM2OTQzZDY5YjRhMjY5MjYwYjdkMjRmNDhkZTgxXzYtNS0xLTEtMjg4MDU_fbd2d05e-19f8-4138-bdba-7dead4f6b843"
      unitRef="usd">265000</us-gaap:DerivativeAssets>
    <us-gaap:DerivativeLiabilities
      contextRef="i7b4846a2320b403d951b251fe43bd88b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTo0MTUzNjk0M2Q2OWI0YTI2OTI2MGI3ZDI0ZjQ4ZGU4MS90YWJsZXJhbmdlOjQxNTM2OTQzZDY5YjRhMjY5MjYwYjdkMjRmNDhkZTgxXzYtOS0xLTEtMjg4MDU_09c253ab-8bb2-4e8a-ad3e-5625d6ac8cb8"
      unitRef="usd">230000</us-gaap:DerivativeLiabilities>
    <us-gaap:DerivativeLiabilities
      contextRef="i7d912f3d97904dfbba9ec1dc3cc1dfda_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTo0MTUzNjk0M2Q2OWI0YTI2OTI2MGI3ZDI0ZjQ4ZGU4MS90YWJsZXJhbmdlOjQxNTM2OTQzZDY5YjRhMjY5MjYwYjdkMjRmNDhkZTgxXzYtMTEtMS0xLTI4ODA1_d129df17-057e-47d8-b43f-889a7120cfcd"
      unitRef="usd">38000</us-gaap:DerivativeLiabilities>
    <us-gaap:OffsettingAssetsTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90ZXh0cmVnaW9uOjJjOWE3YTkxZjc5OTRiZWRiNDBmMGM4MDU5N2VmMWRjXzEzOTU_2d7296f2-22d2-4afc-b4f4-7d7c25ed68b2">&lt;div style="margin-top:4pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the gross activity for all derivative assets and liabilities which were presented on a net basis on the Consolidated Balance Sheets due to the right of offset with each counterparty (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:14pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:18.108%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.826%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.562%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.826%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.709%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:17.814%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.562%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.394%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="15" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Asset Derivatives&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="15" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Liability Derivatives&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross amounts of recognized assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;39&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;265&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross amounts of recognized liabilities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;230&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;38&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross amounts offset&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross amounts offset&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Net amount of assets presented&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;39&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;265&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Net amount of liabilities presented&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;230&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;38&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:OffsettingAssetsTableTextBlock>
    <us-gaap:DerivativeFairValueOfDerivativeAsset
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTo1YmE4YWQ5NzhlOGU0ZTI2YTg5MjliYzdmODExZTg2ZC90YWJsZXJhbmdlOjViYThhZDk3OGU4ZTRlMjZhODkyOWJjN2Y4MTFlODZkXzItMi0xLTEtMjg4MDU_272e10a0-f679-4f5a-b9f2-bda963605e08"
      unitRef="usd">39000</us-gaap:DerivativeFairValueOfDerivativeAsset>
    <us-gaap:DerivativeFairValueOfDerivativeAsset
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTo1YmE4YWQ5NzhlOGU0ZTI2YTg5MjliYzdmODExZTg2ZC90YWJsZXJhbmdlOjViYThhZDk3OGU4ZTRlMjZhODkyOWJjN2Y4MTFlODZkXzItNC0xLTEtMjg4MDU_c705f29c-eb75-4fad-9ad1-75682480d6cf"
      unitRef="usd">265000</us-gaap:DerivativeFairValueOfDerivativeAsset>
    <us-gaap:DerivativeFairValueOfDerivativeLiability
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTo1YmE4YWQ5NzhlOGU0ZTI2YTg5MjliYzdmODExZTg2ZC90YWJsZXJhbmdlOjViYThhZDk3OGU4ZTRlMjZhODkyOWJjN2Y4MTFlODZkXzItOC0xLTEtMjg4MDU_0e60717b-77dd-4357-8055-4868128b59ac"
      unitRef="usd">230000</us-gaap:DerivativeFairValueOfDerivativeLiability>
    <us-gaap:DerivativeFairValueOfDerivativeLiability
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTo1YmE4YWQ5NzhlOGU0ZTI2YTg5MjliYzdmODExZTg2ZC90YWJsZXJhbmdlOjViYThhZDk3OGU4ZTRlMjZhODkyOWJjN2Y4MTFlODZkXzItMTAtMS0xLTI4ODA1_104d2d80-0847-43de-b132-e11af0b0886e"
      unitRef="usd">38000</us-gaap:DerivativeFairValueOfDerivativeLiability>
    <us-gaap:DerivativeAssetCollateralObligationToReturnCashOffset
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTo1YmE4YWQ5NzhlOGU0ZTI2YTg5MjliYzdmODExZTg2ZC90YWJsZXJhbmdlOjViYThhZDk3OGU4ZTRlMjZhODkyOWJjN2Y4MTFlODZkXzMtMi0xLTEtMjg4MDU_6f4d824a-ba84-4e7d-992a-b86f74195484"
      unitRef="usd">0</us-gaap:DerivativeAssetCollateralObligationToReturnCashOffset>
    <us-gaap:DerivativeAssetCollateralObligationToReturnCashOffset
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTo1YmE4YWQ5NzhlOGU0ZTI2YTg5MjliYzdmODExZTg2ZC90YWJsZXJhbmdlOjViYThhZDk3OGU4ZTRlMjZhODkyOWJjN2Y4MTFlODZkXzMtNC0xLTEtMjg4MDU_508940e9-a9a4-4842-8eed-2a2f14094f89"
      unitRef="usd">0</us-gaap:DerivativeAssetCollateralObligationToReturnCashOffset>
    <us-gaap:DerivativeLiabilityCollateralRightToReclaimCashOffset
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTo1YmE4YWQ5NzhlOGU0ZTI2YTg5MjliYzdmODExZTg2ZC90YWJsZXJhbmdlOjViYThhZDk3OGU4ZTRlMjZhODkyOWJjN2Y4MTFlODZkXzMtOC0xLTEtMjg4MDU_874a0ac4-cbd4-4b10-8724-021a1fc5e408"
      unitRef="usd">0</us-gaap:DerivativeLiabilityCollateralRightToReclaimCashOffset>
    <us-gaap:DerivativeLiabilityCollateralRightToReclaimCashOffset
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTo1YmE4YWQ5NzhlOGU0ZTI2YTg5MjliYzdmODExZTg2ZC90YWJsZXJhbmdlOjViYThhZDk3OGU4ZTRlMjZhODkyOWJjN2Y4MTFlODZkXzMtMTAtMS0xLTI4ODA1_fe1b062c-c692-4be6-a6d2-f1c8264cd0eb"
      unitRef="usd">0</us-gaap:DerivativeLiabilityCollateralRightToReclaimCashOffset>
    <us-gaap:DerivativeAssets
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTo1YmE4YWQ5NzhlOGU0ZTI2YTg5MjliYzdmODExZTg2ZC90YWJsZXJhbmdlOjViYThhZDk3OGU4ZTRlMjZhODkyOWJjN2Y4MTFlODZkXzQtMi0xLTEtMjg4MDU_cd5f9d3e-f4ca-474a-a1c4-9f4e8763061f"
      unitRef="usd">39000</us-gaap:DerivativeAssets>
    <us-gaap:DerivativeAssets
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTo1YmE4YWQ5NzhlOGU0ZTI2YTg5MjliYzdmODExZTg2ZC90YWJsZXJhbmdlOjViYThhZDk3OGU4ZTRlMjZhODkyOWJjN2Y4MTFlODZkXzQtNC0xLTEtMjg4MDU_73e5c113-69e6-4e33-99d4-bfff4a085634"
      unitRef="usd">265000</us-gaap:DerivativeAssets>
    <us-gaap:DerivativeLiabilities
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTo1YmE4YWQ5NzhlOGU0ZTI2YTg5MjliYzdmODExZTg2ZC90YWJsZXJhbmdlOjViYThhZDk3OGU4ZTRlMjZhODkyOWJjN2Y4MTFlODZkXzQtOC0xLTEtMjg4MDU_a029ec92-53f6-4721-930d-1a01afd49c8d"
      unitRef="usd">230000</us-gaap:DerivativeLiabilities>
    <us-gaap:DerivativeLiabilities
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTo1YmE4YWQ5NzhlOGU0ZTI2YTg5MjliYzdmODExZTg2ZC90YWJsZXJhbmdlOjViYThhZDk3OGU4ZTRlMjZhODkyOWJjN2Y4MTFlODZkXzQtMTAtMS0xLTI4ODA1_dd389352-5026-43ce-83d6-3bd9c7f08e65"
      unitRef="usd">38000</us-gaap:DerivativeLiabilities>
    <us-gaap:ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90ZXh0cmVnaW9uOjJjOWE3YTkxZjc5OTRiZWRiNDBmMGM4MDU5N2VmMWRjXzE0MTA_00765aca-c74d-48db-8797-b283cab53f3d">&lt;div style="margin-top:4pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Information regarding the effect of derivative instruments, net of the underlying exposure, on the consolidated financial statements was as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:10pt;text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:21.920%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:22.800%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.762%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.908%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.911%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr style="height:12pt"&gt;&lt;td colspan="3" rowspan="2" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" rowspan="2" style="background-color:#ffffff;border-bottom:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Location in Financial Statements&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" rowspan="2" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="15" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Year Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height:12pt"&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2019&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="24" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:100%"&gt;Derivatives Not Designated as Hedging Instruments:&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gains (losses) recognized in current operations&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign currency gain (loss)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;4,262&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(12,308)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,305&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock>
    <us-gaap:ScheduleOfDerivativeInstrumentsEffectOnOtherComprehensiveIncomeLossTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90ZXh0cmVnaW9uOjJjOWE3YTkxZjc5OTRiZWRiNDBmMGM4MDU5N2VmMWRjXzE0MDA_eea57657-70c6-4161-ba6d-65d18cec2766">&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:21.920%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:22.800%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.762%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.908%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.911%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr style="height:12pt"&gt;&lt;td colspan="3" rowspan="2" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" rowspan="2" style="background-color:#ffffff;border-bottom:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Location in Financial Statements&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" rowspan="2" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="15" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Year Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height:12pt"&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2019&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="24" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:100%"&gt;Derivatives Not Designated as Hedging Instruments:&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gains (losses) recognized in current operations&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign currency gain (loss)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;4,262&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(12,308)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,305&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;</us-gaap:ScheduleOfDerivativeInstrumentsEffectOnOtherComprehensiveIncomeLossTableTextBlock>
    <us-gaap:DerivativeGainLossOnDerivativeNet
      contextRef="i7738a97fca024a00829bfaed4f536e63_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTozOGMxYWMwMjM1Mzg0YmM0YjVhMzE2NzU4ZjYxZGRjMy90YWJsZXJhbmdlOjM4YzFhYzAyMzUzODRiYzRiNWEzMTY3NThmNjFkZGMzXzExLTMtMS0xLTI4ODA1_bf8d5714-b162-4f54-b6c6-d0bcc50cc8a7"
      unitRef="usd">4262000</us-gaap:DerivativeGainLossOnDerivativeNet>
    <us-gaap:DerivativeGainLossOnDerivativeNet
      contextRef="i9ba0ae2aca854dc3accbe251cf58f567_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTozOGMxYWMwMjM1Mzg0YmM0YjVhMzE2NzU4ZjYxZGRjMy90YWJsZXJhbmdlOjM4YzFhYzAyMzUzODRiYzRiNWEzMTY3NThmNjFkZGMzXzExLTUtMS0xLTI4ODA1_87422c9f-b691-4787-a2a9-76b8707fcc04"
      unitRef="usd">-12308000</us-gaap:DerivativeGainLossOnDerivativeNet>
    <us-gaap:DerivativeGainLossOnDerivativeNet
      contextRef="i80a722d47fc34f3388de28ec4399d41e_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTozOGMxYWMwMjM1Mzg0YmM0YjVhMzE2NzU4ZjYxZGRjMy90YWJsZXJhbmdlOjM4YzFhYzAyMzUzODRiYzRiNWEzMTY3NThmNjFkZGMzXzExLTctMS0xLTI4ODA1_d1e965b7-c223-4897-a37a-be9f36ec248b"
      unitRef="usd">1305000</us-gaap:DerivativeGainLossOnDerivativeNet>
    <us-gaap:RevenueFromContractWithCustomerTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90ZXh0cmVnaW9uOjZmMGYxNjgxZDA4NjRkNjA5NGMzOGU4YjQ2MWU1MTQ3XzIxNjg_351938ef-db21-4acf-8311-dd012aae4cc0">Revenue Recognition&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes disaggregated revenue information by geographic area based on the customer's country of domicile (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:11pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:61.216%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.630%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.826%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.630%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.632%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Year Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2019&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Americas&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;435,220&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;310,027&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;277,155&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Europe&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;247,744&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;208,787&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;227,738&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Greater China&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;200,135&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;168,287&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;115,061&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Other Asia&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;153,999&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;123,919&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;105,671&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;1,037,098&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;811,020&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;725,625&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:1pt;text-align:justify"&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes disaggregated revenue information by revenue type (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:11pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:61.125%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.466%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.824%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.613%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.824%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.616%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Year Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2019&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Standard products and services&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;889,253&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;674,830&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;629,220&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Application-specific customer solutions&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;147,845&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;136,190&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;96,405&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;1,037,098&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;811,020&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;725,625&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Costs to Fulfill a Contract&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:3pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Costs to fulfill a contract are included in "Prepaid expenses and other current assets" on the Consolidated Balance Sheets and amounted to $10,854,000 and $6,846,000 as of December 31, 2021 and 2020, respectively. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:3pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Accounts Receivable, Contract Assets, and Contract Liabilities&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:3pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Accounts receivable represent amounts billed and currently due from customers which are reported at their net estimated realizable value. The Company maintains an allowance against its accounts receivable for credit losses. Contract assets consist of unbilled revenue which arises when revenue is recognized in advance of billing for certain application-specific customer solutions contracts. Contract liabilities consist of deferred revenue and customer deposits which arise when amounts are billed to or collected from customers in advance of revenue recognition.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes changes in the allowance for credit losses (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.415%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:79.341%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:18.459%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Amount&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2019&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;530&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Increases to the allowance for credit losses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;600&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Write-offs, net of recoveries&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(300)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign exchange rate changes&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;831&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Increases to the allowance for credit losses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Write-offs, net of recoveries&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(55)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign exchange rate changes&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;776&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company's higher estimate of expected credit losses in 2020 took into account the global economic conditions resulting from the COVID-19 pandemic.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:3pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the deferred revenue and customer deposits activity (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:8pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:79.398%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:18.402%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Amount&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2019&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;14,432&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Deferral of revenue billed in the current period, net of recognition&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;19,014&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Recognition of revenue deferred in prior period&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(12,443)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign exchange rate changes&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;271&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;21,274&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Deferral of revenue billed in the current period, net of recognition&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;31,907&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Recognition of revenue deferred in prior period&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(17,403)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign exchange rate changes&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(35)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;35,743&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;As a practical expedient, the Company has elected not to disclose the aggregate amount of the transaction price allocated to unsatisfied performance obligations, as our contracts have an original expected duration of less than one year.&lt;/span&gt;&lt;/div&gt;</us-gaap:RevenueFromContractWithCustomerTextBlock>
    <us-gaap:DisaggregationOfRevenueTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90ZXh0cmVnaW9uOjZmMGYxNjgxZDA4NjRkNjA5NGMzOGU4YjQ2MWU1MTQ3XzIxNzA_8694e2e6-13a4-4208-a455-d2530cc45bf2">&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes disaggregated revenue information by geographic area based on the customer's country of domicile (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:11pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:61.216%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.630%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.826%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.630%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.632%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Year Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2019&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Americas&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;435,220&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;310,027&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;277,155&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Europe&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;247,744&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;208,787&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;227,738&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Greater China&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;200,135&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;168,287&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;115,061&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Other Asia&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;153,999&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;123,919&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;105,671&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;1,037,098&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;811,020&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;725,625&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:1pt;text-align:justify"&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes disaggregated revenue information by revenue type (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:11pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:61.125%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.466%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.824%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.613%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.824%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.616%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Year Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2019&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Standard products and services&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;889,253&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;674,830&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;629,220&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Application-specific customer solutions&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;147,845&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;136,190&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;96,405&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;1,037,098&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;811,020&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;725,625&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:DisaggregationOfRevenueTableTextBlock>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i60257de642494bd1a3f4066707e2f9c2_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTo5NmIxYmI0OTkzYzc0OTk2ODdjMWY5NTY3YmZhOTk4ZS90YWJsZXJhbmdlOjk2YjFiYjQ5OTNjNzQ5OTY4N2MxZjk1NjdiZmE5OThlXzItMi0xLTEtMjg4MDU_4b1dab75-8252-4bdd-a480-51cbdc844a53"
      unitRef="usd">435220000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i8b857d6347784d988a40fca03c6bd5be_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTo5NmIxYmI0OTkzYzc0OTk2ODdjMWY5NTY3YmZhOTk4ZS90YWJsZXJhbmdlOjk2YjFiYjQ5OTNjNzQ5OTY4N2MxZjk1NjdiZmE5OThlXzItNC0xLTEtMjg4MDU_66005e54-622e-4f3a-b26b-c3dafc7b6e8c"
      unitRef="usd">310027000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i565882183d72492aba9afe23745416e2_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTo5NmIxYmI0OTkzYzc0OTk2ODdjMWY5NTY3YmZhOTk4ZS90YWJsZXJhbmdlOjk2YjFiYjQ5OTNjNzQ5OTY4N2MxZjk1NjdiZmE5OThlXzItNi0xLTEtMjg4MDU_9f6062d7-ff0e-4dce-9ef9-a3cf1bc8a6d5"
      unitRef="usd">277155000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="icdd53699b9af4b4388009f695891ea3f_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTo5NmIxYmI0OTkzYzc0OTk2ODdjMWY5NTY3YmZhOTk4ZS90YWJsZXJhbmdlOjk2YjFiYjQ5OTNjNzQ5OTY4N2MxZjk1NjdiZmE5OThlXzMtMi0xLTEtMjg4MDU_5b44449d-3c21-4765-870e-9e790b946493"
      unitRef="usd">247744000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ib6352ba54d8946149998f1a1bbe233e0_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTo5NmIxYmI0OTkzYzc0OTk2ODdjMWY5NTY3YmZhOTk4ZS90YWJsZXJhbmdlOjk2YjFiYjQ5OTNjNzQ5OTY4N2MxZjk1NjdiZmE5OThlXzMtNC0xLTEtMjg4MDU_c36f8673-d5de-407b-bff1-f79de5f688d6"
      unitRef="usd">208787000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ib7c3d649737648878f8b4fc1a2876f26_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTo5NmIxYmI0OTkzYzc0OTk2ODdjMWY5NTY3YmZhOTk4ZS90YWJsZXJhbmdlOjk2YjFiYjQ5OTNjNzQ5OTY4N2MxZjk1NjdiZmE5OThlXzMtNi0xLTEtMjg4MDU_6c1e0582-49ce-4650-a6bc-5bf80498cb9f"
      unitRef="usd">227738000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i3dc436c98f1d4e0792723c1df4fcf255_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTo5NmIxYmI0OTkzYzc0OTk2ODdjMWY5NTY3YmZhOTk4ZS90YWJsZXJhbmdlOjk2YjFiYjQ5OTNjNzQ5OTY4N2MxZjk1NjdiZmE5OThlXzQtMi0xLTEtMjg4MDU_1fd6221e-66aa-4708-bf27-025b349b6e1b"
      unitRef="usd">200135000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ie0c6ac0bfff04b6a9c0d23f2260b4c7f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTo5NmIxYmI0OTkzYzc0OTk2ODdjMWY5NTY3YmZhOTk4ZS90YWJsZXJhbmdlOjk2YjFiYjQ5OTNjNzQ5OTY4N2MxZjk1NjdiZmE5OThlXzQtNC0xLTEtMjg4MDU_c4e0d176-fe44-4563-8a22-e21cb7e741bd"
      unitRef="usd">168287000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i717eab74d0194494b7a2294ffc0e7273_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTo5NmIxYmI0OTkzYzc0OTk2ODdjMWY5NTY3YmZhOTk4ZS90YWJsZXJhbmdlOjk2YjFiYjQ5OTNjNzQ5OTY4N2MxZjk1NjdiZmE5OThlXzQtNi0xLTEtMjg4MDU_535f614c-3e54-4ff6-bb4a-2229c2bdfd98"
      unitRef="usd">115061000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i9478b847f49e4115928476734dea9c64_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTo5NmIxYmI0OTkzYzc0OTk2ODdjMWY5NTY3YmZhOTk4ZS90YWJsZXJhbmdlOjk2YjFiYjQ5OTNjNzQ5OTY4N2MxZjk1NjdiZmE5OThlXzUtMi0xLTEtMjg4MDU_c4ba9e80-5457-4f9f-9780-8b046e7b519d"
      unitRef="usd">153999000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="if9fc10a69f254823a47c3b4444adf857_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTo5NmIxYmI0OTkzYzc0OTk2ODdjMWY5NTY3YmZhOTk4ZS90YWJsZXJhbmdlOjk2YjFiYjQ5OTNjNzQ5OTY4N2MxZjk1NjdiZmE5OThlXzUtNC0xLTEtMjg4MDU_9b761a3c-c8ed-4a34-b035-5a5e4927bee9"
      unitRef="usd">123919000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ia09d8e352163476a90fdecfca35298c5_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTo5NmIxYmI0OTkzYzc0OTk2ODdjMWY5NTY3YmZhOTk4ZS90YWJsZXJhbmdlOjk2YjFiYjQ5OTNjNzQ5OTY4N2MxZjk1NjdiZmE5OThlXzUtNi0xLTEtMjg4MDU_52b7fd45-c1db-4e80-84a8-164f32d1d9de"
      unitRef="usd">105671000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTo5NmIxYmI0OTkzYzc0OTk2ODdjMWY5NTY3YmZhOTk4ZS90YWJsZXJhbmdlOjk2YjFiYjQ5OTNjNzQ5OTY4N2MxZjk1NjdiZmE5OThlXzYtMi0xLTEtMjg4MDU_6494d25c-1e00-4db0-81e1-cb58c1406e7e"
      unitRef="usd">1037098000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTo5NmIxYmI0OTkzYzc0OTk2ODdjMWY5NTY3YmZhOTk4ZS90YWJsZXJhbmdlOjk2YjFiYjQ5OTNjNzQ5OTY4N2MxZjk1NjdiZmE5OThlXzYtNC0xLTEtMjg4MDU_ffe38b1d-23de-49f9-966d-4d888bed8741"
      unitRef="usd">811020000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTo5NmIxYmI0OTkzYzc0OTk2ODdjMWY5NTY3YmZhOTk4ZS90YWJsZXJhbmdlOjk2YjFiYjQ5OTNjNzQ5OTY4N2MxZjk1NjdiZmE5OThlXzYtNi0xLTEtMjg4MDU_5ebd64a5-db76-4c49-9980-ebcb722de048"
      unitRef="usd">725625000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i978d0a39464248048a6adfb0338684b7_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZTBjMjNkYTQ1Njk0OWY2YWRmZjExODdhNWRlMmU1Zi90YWJsZXJhbmdlOmNlMGMyM2RhNDU2OTQ5ZjZhZGZmMTE4N2E1ZGUyZTVmXzItMi0xLTEtMjg4MDU_3ee547fc-c8c2-4d8c-9c15-ce19ce8c12ed"
      unitRef="usd">889253000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="if8ddf600fc0548fd9b6824b8496ad6bd_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZTBjMjNkYTQ1Njk0OWY2YWRmZjExODdhNWRlMmU1Zi90YWJsZXJhbmdlOmNlMGMyM2RhNDU2OTQ5ZjZhZGZmMTE4N2E1ZGUyZTVmXzItNC0xLTEtMjg4MDU_f76d54f5-4e71-4bdd-b793-92b75072b4a6"
      unitRef="usd">674830000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="icccce2aa3ff74ec8a00c89034af41fc6_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZTBjMjNkYTQ1Njk0OWY2YWRmZjExODdhNWRlMmU1Zi90YWJsZXJhbmdlOmNlMGMyM2RhNDU2OTQ5ZjZhZGZmMTE4N2E1ZGUyZTVmXzItNi0xLTEtMjg4MDU_ec77bc31-0c42-47e3-8720-034cbb4b783a"
      unitRef="usd">629220000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i4d3eb05597f64cf7a138bef69f2aa751_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZTBjMjNkYTQ1Njk0OWY2YWRmZjExODdhNWRlMmU1Zi90YWJsZXJhbmdlOmNlMGMyM2RhNDU2OTQ5ZjZhZGZmMTE4N2E1ZGUyZTVmXzMtMi0xLTEtMjg4MDU_aaf5ef65-3b1b-4c5f-b8b7-2080768a8a24"
      unitRef="usd">147845000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i25c7239e696d401ab604a30f0c0518a0_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZTBjMjNkYTQ1Njk0OWY2YWRmZjExODdhNWRlMmU1Zi90YWJsZXJhbmdlOmNlMGMyM2RhNDU2OTQ5ZjZhZGZmMTE4N2E1ZGUyZTVmXzMtNC0xLTEtMjg4MDU_4cf10cc7-f6e7-4f3f-853a-94da03e6e054"
      unitRef="usd">136190000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i3215f7665a784c45aa04c3aae867d897_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZTBjMjNkYTQ1Njk0OWY2YWRmZjExODdhNWRlMmU1Zi90YWJsZXJhbmdlOmNlMGMyM2RhNDU2OTQ5ZjZhZGZmMTE4N2E1ZGUyZTVmXzMtNi0xLTEtMjg4MDU_d0ab2447-c963-42aa-8fe3-b26e2b9d3807"
      unitRef="usd">96405000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZTBjMjNkYTQ1Njk0OWY2YWRmZjExODdhNWRlMmU1Zi90YWJsZXJhbmdlOmNlMGMyM2RhNDU2OTQ5ZjZhZGZmMTE4N2E1ZGUyZTVmXzQtMi0xLTEtMjg4MDU_db88e3dd-f260-4e01-aba4-77eaa2e3e2c8"
      unitRef="usd">1037098000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZTBjMjNkYTQ1Njk0OWY2YWRmZjExODdhNWRlMmU1Zi90YWJsZXJhbmdlOmNlMGMyM2RhNDU2OTQ5ZjZhZGZmMTE4N2E1ZGUyZTVmXzQtNC0xLTEtMjg4MDU_3584afe5-ac41-4c0e-975b-eaa0f594628f"
      unitRef="usd">811020000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZTBjMjNkYTQ1Njk0OWY2YWRmZjExODdhNWRlMmU1Zi90YWJsZXJhbmdlOmNlMGMyM2RhNDU2OTQ5ZjZhZGZmMTE4N2E1ZGUyZTVmXzQtNi0xLTEtMjg4MDU_bfea890b-5fb0-4da6-bc1e-7e855884603a"
      unitRef="usd">725625000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:CapitalizedContractCostGross
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90ZXh0cmVnaW9uOjZmMGYxNjgxZDA4NjRkNjA5NGMzOGU4YjQ2MWU1MTQ3XzQyMg_4c383601-34eb-40fb-bab0-54fe3f749e7f"
      unitRef="usd">10854000</us-gaap:CapitalizedContractCostGross>
    <us-gaap:CapitalizedContractCostGross
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90ZXh0cmVnaW9uOjZmMGYxNjgxZDA4NjRkNjA5NGMzOGU4YjQ2MWU1MTQ3XzQyOQ_05c98405-676b-41a9-a359-8027f9b16867"
      unitRef="usd">6846000</us-gaap:CapitalizedContractCostGross>
    <us-gaap:AllowanceForCreditLossesOnFinancingReceivablesTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90ZXh0cmVnaW9uOjZmMGYxNjgxZDA4NjRkNjA5NGMzOGU4YjQ2MWU1MTQ3XzIxNzE_06fbdd16-41cd-46cb-b1d4-32ea3f5fa76b">&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes changes in the allowance for credit losses (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.415%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:79.341%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:18.459%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Amount&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2019&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;530&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Increases to the allowance for credit losses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;600&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Write-offs, net of recoveries&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(300)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign exchange rate changes&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;831&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Increases to the allowance for credit losses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Write-offs, net of recoveries&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(55)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign exchange rate changes&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;776&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:AllowanceForCreditLossesOnFinancingReceivablesTableTextBlock>
    <us-gaap:AllowanceForDoubtfulAccountsReceivable
      contextRef="ia991b13c7b074439964a26d579235ee4_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTozMjJiODhhY2RiMDg0YmY5YmYzYzI5MDI2MmQwYTQ4Yi90YWJsZXJhbmdlOjMyMmI4OGFjZGIwODRiZjliZjNjMjkwMjYyZDBhNDhiXzEtMS0xLTEtMjg4MDU_886e49ff-402b-4a3b-a9a3-fb7f0b833b52"
      unitRef="usd">530000</us-gaap:AllowanceForDoubtfulAccountsReceivable>
    <us-gaap:ProvisionForDoubtfulAccounts
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTozMjJiODhhY2RiMDg0YmY5YmYzYzI5MDI2MmQwYTQ4Yi90YWJsZXJhbmdlOjMyMmI4OGFjZGIwODRiZjliZjNjMjkwMjYyZDBhNDhiXzItMS0xLTEtMjg4MDU_9ebdd672-b755-45a7-98ef-a722d6fd997d"
      unitRef="usd">600000</us-gaap:ProvisionForDoubtfulAccounts>
    <us-gaap:AllowanceForDoubtfulAccountsReceivableWriteOffs
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTozMjJiODhhY2RiMDg0YmY5YmYzYzI5MDI2MmQwYTQ4Yi90YWJsZXJhbmdlOjMyMmI4OGFjZGIwODRiZjliZjNjMjkwMjYyZDBhNDhiXzMtMS0xLTEtMjg4MDU_854dd442-0b03-425a-b309-e0fc1a21a51b"
      unitRef="usd">300000</us-gaap:AllowanceForDoubtfulAccountsReceivableWriteOffs>
    <cgnx:AccountsReceivableAllowanceForCreditLossForeignExchangeRateAdjustment
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTozMjJiODhhY2RiMDg0YmY5YmYzYzI5MDI2MmQwYTQ4Yi90YWJsZXJhbmdlOjMyMmI4OGFjZGIwODRiZjliZjNjMjkwMjYyZDBhNDhiXzQtMS0xLTEtMjg4MDU_1a3a10a9-fd82-4ba1-ba32-22f003658371"
      unitRef="usd">1000</cgnx:AccountsReceivableAllowanceForCreditLossForeignExchangeRateAdjustment>
    <us-gaap:AllowanceForDoubtfulAccountsReceivable
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTozMjJiODhhY2RiMDg0YmY5YmYzYzI5MDI2MmQwYTQ4Yi90YWJsZXJhbmdlOjMyMmI4OGFjZGIwODRiZjliZjNjMjkwMjYyZDBhNDhiXzUtMS0xLTEtMjg4MDU_1e6f717a-f236-45b3-acad-374fa1f076b6"
      unitRef="usd">831000</us-gaap:AllowanceForDoubtfulAccountsReceivable>
    <us-gaap:ProvisionForDoubtfulAccounts
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTozMjJiODhhY2RiMDg0YmY5YmYzYzI5MDI2MmQwYTQ4Yi90YWJsZXJhbmdlOjMyMmI4OGFjZGIwODRiZjliZjNjMjkwMjYyZDBhNDhiXzYtMS0xLTEtMjg4MDU_cdea0e7a-3cc6-436b-94d5-d1ea1c755d97"
      unitRef="usd">0</us-gaap:ProvisionForDoubtfulAccounts>
    <us-gaap:AllowanceForDoubtfulAccountsReceivableWriteOffs
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTozMjJiODhhY2RiMDg0YmY5YmYzYzI5MDI2MmQwYTQ4Yi90YWJsZXJhbmdlOjMyMmI4OGFjZGIwODRiZjliZjNjMjkwMjYyZDBhNDhiXzctMS0xLTEtMjg4MDU_65408213-5970-4b17-8474-cf0acdc2316b"
      unitRef="usd">55000</us-gaap:AllowanceForDoubtfulAccountsReceivableWriteOffs>
    <cgnx:AccountsReceivableAllowanceForCreditLossForeignExchangeRateAdjustment
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTozMjJiODhhY2RiMDg0YmY5YmYzYzI5MDI2MmQwYTQ4Yi90YWJsZXJhbmdlOjMyMmI4OGFjZGIwODRiZjliZjNjMjkwMjYyZDBhNDhiXzgtMS0xLTEtMjg4MDU_9ca3018d-1bcf-4316-b17d-63aeb2edb7d7"
      unitRef="usd">0</cgnx:AccountsReceivableAllowanceForCreditLossForeignExchangeRateAdjustment>
    <us-gaap:AllowanceForDoubtfulAccountsReceivable
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTozMjJiODhhY2RiMDg0YmY5YmYzYzI5MDI2MmQwYTQ4Yi90YWJsZXJhbmdlOjMyMmI4OGFjZGIwODRiZjliZjNjMjkwMjYyZDBhNDhiXzktMS0xLTEtMjg4MDU_0345c9ad-3a95-4598-8faf-e188ea6ff404"
      unitRef="usd">776000</us-gaap:AllowanceForDoubtfulAccountsReceivable>
    <us-gaap:ContractWithCustomerAssetAndLiabilityTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90ZXh0cmVnaW9uOjZmMGYxNjgxZDA4NjRkNjA5NGMzOGU4YjQ2MWU1MTQ3XzIxNzM_c4d4c0f5-3b82-491a-8097-762e46dc2664">&lt;div style="margin-top:3pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the deferred revenue and customer deposits activity (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:8pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:79.398%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:18.402%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Amount&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2019&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;14,432&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Deferral of revenue billed in the current period, net of recognition&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;19,014&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Recognition of revenue deferred in prior period&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(12,443)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign exchange rate changes&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;271&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;21,274&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Deferral of revenue billed in the current period, net of recognition&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;31,907&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Recognition of revenue deferred in prior period&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(17,403)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign exchange rate changes&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(35)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;35,743&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ContractWithCustomerAssetAndLiabilityTableTextBlock>
    <us-gaap:ContractWithCustomerLiabilityCurrent
      contextRef="ia991b13c7b074439964a26d579235ee4_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZmE2NTQ2MDc0NzY0NDVkYmVlNzFhYmYzMzY0YjVmMi90YWJsZXJhbmdlOmNmYTY1NDYwNzQ3NjQ0NWRiZWU3MWFiZjMzNjRiNWYyXzEtMS0xLTEtMjg4MDU_11333579-57fa-4468-8784-2485ee25465f"
      unitRef="usd">14432000</us-gaap:ContractWithCustomerLiabilityCurrent>
    <cgnx:ContractWithCustomerLiabilityPeriodIncreaseDecrease
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZmE2NTQ2MDc0NzY0NDVkYmVlNzFhYmYzMzY0YjVmMi90YWJsZXJhbmdlOmNmYTY1NDYwNzQ3NjQ0NWRiZWU3MWFiZjMzNjRiNWYyXzItMS0xLTEtMjg4MDU_2040c3b7-6869-4895-8cb1-a96d395b15f0"
      unitRef="usd">19014000</cgnx:ContractWithCustomerLiabilityPeriodIncreaseDecrease>
    <cgnx:ContractWithCustomerLiabilityCurrentAndPriorPeriodRevenueRecognized
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZmE2NTQ2MDc0NzY0NDVkYmVlNzFhYmYzMzY0YjVmMi90YWJsZXJhbmdlOmNmYTY1NDYwNzQ3NjQ0NWRiZWU3MWFiZjMzNjRiNWYyXzMtMS0xLTEtMjg4MDU_15aefcea-5339-40db-989d-7e26949b00a8"
      unitRef="usd">12443000</cgnx:ContractWithCustomerLiabilityCurrentAndPriorPeriodRevenueRecognized>
    <cgnx:ContractLiabilityForeignExchangeRateChanges
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZmE2NTQ2MDc0NzY0NDVkYmVlNzFhYmYzMzY0YjVmMi90YWJsZXJhbmdlOmNmYTY1NDYwNzQ3NjQ0NWRiZWU3MWFiZjMzNjRiNWYyXzQtMS0xLTEtMjg4MDU_2383fdf0-721c-43f7-80ec-f56db4d5ad04"
      unitRef="usd">271000</cgnx:ContractLiabilityForeignExchangeRateChanges>
    <us-gaap:ContractWithCustomerLiabilityCurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZmE2NTQ2MDc0NzY0NDVkYmVlNzFhYmYzMzY0YjVmMi90YWJsZXJhbmdlOmNmYTY1NDYwNzQ3NjQ0NWRiZWU3MWFiZjMzNjRiNWYyXzUtMS0xLTEtMjg4MDU_b7216cfc-a8f9-43db-a9a1-660ecff404c7"
      unitRef="usd">21274000</us-gaap:ContractWithCustomerLiabilityCurrent>
    <cgnx:ContractWithCustomerLiabilityPeriodIncreaseDecrease
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZmE2NTQ2MDc0NzY0NDVkYmVlNzFhYmYzMzY0YjVmMi90YWJsZXJhbmdlOmNmYTY1NDYwNzQ3NjQ0NWRiZWU3MWFiZjMzNjRiNWYyXzYtMS0xLTEtMjg4MDU_5ec60266-3eab-46a0-9c3b-2916886239c2"
      unitRef="usd">31907000</cgnx:ContractWithCustomerLiabilityPeriodIncreaseDecrease>
    <cgnx:ContractWithCustomerLiabilityCurrentAndPriorPeriodRevenueRecognized
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZmE2NTQ2MDc0NzY0NDVkYmVlNzFhYmYzMzY0YjVmMi90YWJsZXJhbmdlOmNmYTY1NDYwNzQ3NjQ0NWRiZWU3MWFiZjMzNjRiNWYyXzctMS0xLTEtMjg4MDU_e25f467a-e052-4e16-9fbc-20b7545ced12"
      unitRef="usd">17403000</cgnx:ContractWithCustomerLiabilityCurrentAndPriorPeriodRevenueRecognized>
    <cgnx:ContractLiabilityForeignExchangeRateChanges
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZmE2NTQ2MDc0NzY0NDVkYmVlNzFhYmYzMzY0YjVmMi90YWJsZXJhbmdlOmNmYTY1NDYwNzQ3NjQ0NWRiZWU3MWFiZjMzNjRiNWYyXzgtMS0xLTEtMjg4MDU_c44557fd-2f31-4415-a948-f22048847c3f"
      unitRef="usd">-35000</cgnx:ContractLiabilityForeignExchangeRateChanges>
    <us-gaap:ContractWithCustomerLiabilityCurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZmE2NTQ2MDc0NzY0NDVkYmVlNzFhYmYzMzY0YjVmMi90YWJsZXJhbmdlOmNmYTY1NDYwNzQ3NjQ0NWRiZWU3MWFiZjMzNjRiNWYyXzktMS0xLTEtMjg4MDU_55e77b4a-502e-45db-ae3f-54e0ad03528c"
      unitRef="usd">35743000</us-gaap:ContractWithCustomerLiabilityCurrent>
    <us-gaap:StockholdersEquityNoteDisclosureTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzQxMzM_248170f5-df2c-4988-817a-c66a4763c5c5">Shareholders&#x2019; Equity&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Preferred Stock&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company has 400,000 shares of authorized but unissued $.01 par value preferred stock.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Common Stock&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;On April 25, 2018, the Company's shareholders approved an amendment to the Company's Articles of Organization to increase the authorized number of shares of $.002 par value common stock from 200,000,000 to 300,000,000. In addition, on April 25, 2018, the Company's shareholders approved an amendment and restatement of the Company's 2001 General Stock Option Plan which provides for an increase in the number of available shares by 10,000,000.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Each outstanding share of common stock entitles the record holder to one vote on all matters submitted to a vote of the Company&#x2019;s shareholders. Common shareholders are also entitled to dividends when and if declared by the Company&#x2019;s Board of Directors.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Stock Repurchases&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In October 2018, the Company's Board of Directors authorized the repurchase of $200,000,000 of the Company's common stock. Under this October 2018 program, the Company repurchased 1,398,000 shares at a cost of $61,690,000 in 2019, 1,215,000 shares at a cost of $51,036,000 in 2020, and 957,000 shares at a cost of $78,652,000 in 2021, which completed purchases under this program. On March 12, 2020, the Company's Board of Directors authorized the repurchase of an additional $200,000,000 of the Company's common stock. Under this March 2020 program, the Company repurchased 1,060,000 shares, including 5,000 shares that had not yet settled as of December 31, 2021, at a cost of $83,000,000 in 2021, leaving a remaining balance of $117,000,000. The Company may repurchase shares under this program in future periods depending on a variety of factors, including, among other things, the impact of dilution from employee stock awards, stock price, share availability, and cash requirements. The Company is authorized to make repurchases of its common stock through open market purchases, pursuant to Rule 10b5-1 trading plans, or in privately negotiated transactions.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Dividends&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company&#x2019;s Board of Directors declared and paid cash dividends of $0.050 per share in the first, second, and third quarters of 2019, $0.055 per share in the fourth quarter of 2019 and in the first, second, and third quarters of 2020, and $0.060 per share in the fourth quarter of 2020 and in the first, second, and third quarters of 2021. The dividend was increased to $0.065 per share in the fourth quarter of 2021. Also, in the fourth quarter of 2020, an additional special cash dividend of $2.00 per share was declared and paid. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Total dividends paid were $43,263,000 in 2021, $390,508,000 in 2020, which included $351,428,000 paid for the special cash dividend, and $35,124,000 in 2019. Future dividends will be declared at the discretion of the Company's Board of Directors and will depend on such factors as the Board deems relevant, including, among other things, the Company's ability to generate positive cash flow from operations.&lt;/span&gt;&lt;/div&gt;</us-gaap:StockholdersEquityNoteDisclosureTextBlock>
    <us-gaap:PreferredStockSharesAuthorized
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzY3_88a2cd52-d66b-488e-b1ae-86902419c06c"
      unitRef="shares">400000</us-gaap:PreferredStockSharesAuthorized>
    <us-gaap:PreferredStockParOrStatedValuePerShare
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzEwNA_4e535f56-686e-498c-8411-9de4218b08dc"
      unitRef="usdPerShare">0.01</us-gaap:PreferredStockParOrStatedValuePerShare>
    <us-gaap:CommonStockParOrStatedValuePerShare
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzMwNA_c6c170eb-9a88-450e-bb4e-42be1788763e"
      unitRef="usdPerShare">0.002</us-gaap:CommonStockParOrStatedValuePerShare>
    <us-gaap:CommonStockSharesAuthorized
      contextRef="ia18096d71003430faf7fc3b7199862b2_I20160427"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzMzNQ_436e17f4-ab76-4df0-b547-4a3c5da5249f"
      unitRef="shares">200000000</us-gaap:CommonStockSharesAuthorized>
    <us-gaap:CommonStockSharesAuthorized
      contextRef="ibc957dc1955640e68337295dda8c967f_I20180425"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzM0MQ_09eb80e1-6238-4ab6-baaf-da02cb472495"
      unitRef="shares">300000000</us-gaap:CommonStockSharesAuthorized>
    <us-gaap:CommonStockSharesAuthorized
      contextRef="ic97efe271a134f3bb78c5e0f0c609dcf_I20160428"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzU1OA_c92ee5c6-9ac3-40bb-a08a-21a667946899"
      unitRef="shares">10000000</us-gaap:CommonStockSharesAuthorized>
    <cgnx:VoteEntitledForEachCommonShareOutstanding
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzYzMQ_06b4547b-57b3-45fb-a2b6-0200903a91e2"
      unitRef="vote">1</cgnx:VoteEntitledForEachCommonShareOutstanding>
    <us-gaap:StockRepurchaseProgramAuthorizedAmount1
      contextRef="icee5a3a1e242481d9356d6512fd34156_I20181029"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzIzNDQ_a989eb26-52cf-4520-9829-8b33be18ec9e"
      unitRef="usd">200000000</us-gaap:StockRepurchaseProgramAuthorizedAmount1>
    <us-gaap:StockRepurchasedDuringPeriodShares
      contextRef="i88965a860e684ef3a6ed5d4f06b8baaf_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzI1NDE_8ca487d2-81d3-4131-9f88-0976af85426f"
      unitRef="shares">1398000</us-gaap:StockRepurchasedDuringPeriodShares>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="i88965a860e684ef3a6ed5d4f06b8baaf_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzI1NjQ_d8872c36-3e16-4624-8a13-f6a57ea4120f"
      unitRef="usd">61690000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:StockRepurchasedDuringPeriodShares
      contextRef="ifb411f18f9444b618c0b5722a8f4c8c9_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzI1Nzk_29c71666-22ef-4942-bbbf-5f76b07d47eb"
      unitRef="shares">1215000</us-gaap:StockRepurchasedDuringPeriodShares>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="ifb411f18f9444b618c0b5722a8f4c8c9_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzI2MDI_fc45ded2-eebb-4dbb-b5db-5724c3286048"
      unitRef="usd">51036000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:StockRepurchasedDuringPeriodShares
      contextRef="iec44922cbbe14b39918906b53d07cce4_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzEwOTk1MTE2MzI1NzY_694c6c48-db8b-4854-83b9-6679de1b07c2"
      unitRef="shares">957000</us-gaap:StockRepurchasedDuringPeriodShares>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="iec44922cbbe14b39918906b53d07cce4_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzEwOTk1MTE2MzI1OTM_a505062c-985c-4242-b986-f64c933d43c9"
      unitRef="usd">78652000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:StockRepurchaseProgramAuthorizedAmount1
      contextRef="ib603cdbab9484789a7f90ba5470fa1fc_I20200312"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzI3NzY_529d01a7-3fa3-484a-95d6-4113ec4cc28e"
      unitRef="usd">200000000</us-gaap:StockRepurchaseProgramAuthorizedAmount1>
    <us-gaap:StockRepurchasedDuringPeriodShares
      contextRef="i268f447259bc49a5b4b4ad1f494cb6a4_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzEwOTk1MTE2MzMxMzU_309bb633-40cf-44a5-9cc6-ea404f201db1"
      unitRef="shares">1060000</us-gaap:StockRepurchasedDuringPeriodShares>
    <cgnx:StockRepurchasedDuringPeriodSharesNotYetSettled
      contextRef="i268f447259bc49a5b4b4ad1f494cb6a4_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzE2NDkyNjc0NDc4NDI_7d5f3cc8-d693-480b-8b8d-85dbbdd53ac6"
      unitRef="shares">5000</cgnx:StockRepurchasedDuringPeriodSharesNotYetSettled>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="i268f447259bc49a5b4b4ad1f494cb6a4_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzEwOTk1MTE2MzMxNDE_02b8c66c-b0c3-4ca6-b080-944dba2acf93"
      unitRef="usd">83000000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1
      contextRef="i10dc5333496046ad93d3758e0acfd0ad_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzEwOTk1MTE2MzMxNDI_67b0ee27-eeff-4be1-af11-78d9aee8b6ca"
      unitRef="usd">117000000</us-gaap:StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1>
    <us-gaap:CommonStockDividendsPerShareCashPaid
      contextRef="i6b8a386974cc4d9ba5c5b000e859ee31_D20190101-20190929"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzEwOTk1MTE2MzM4MTk_54ae00ff-370a-41ec-89ba-d7fd3b45f142"
      unitRef="usdPerShare">0.050</us-gaap:CommonStockDividendsPerShareCashPaid>
    <us-gaap:CommonStockDividendsPerShareCashPaid
      contextRef="idf4cd8f218d9414faa06b3c55217d8fe_D20190930-20191231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzM0MDk_a87e2288-6598-4d11-961e-96c81e26b7b9"
      unitRef="usdPerShare">0.055</us-gaap:CommonStockDividendsPerShareCashPaid>
    <us-gaap:CommonStockDividendsPerShareCashPaid
      contextRef="icf5af4f37b30453da1856b17e836038f_D20200928-20201231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzM0NzY_9f57f50d-8836-410b-9d26-c14b763d48a4"
      unitRef="usdPerShare">0.060</us-gaap:CommonStockDividendsPerShareCashPaid>
    <us-gaap:CommonStockDividendsPerShareCashPaid
      contextRef="i92b408fed68541808d3ffb0dc09c1308_D20211004-20211231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzM2MDE_98fd7407-bb4f-4882-b0ec-1885b249de2a"
      unitRef="usdPerShare">0.065</us-gaap:CommonStockDividendsPerShareCashPaid>
    <us-gaap:CommonStockDividendsPerShareDeclared
      contextRef="icf5af4f37b30453da1856b17e836038f_D20200928-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzM3MjE_a48ee045-8741-4c48-965e-1d23e62f0947"
      unitRef="usdPerShare">2.00</us-gaap:CommonStockDividendsPerShareDeclared>
    <us-gaap:PaymentsOfDividends
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzEwOTk1MTE2MzI2Njc_a25766eb-d77b-4c9d-8f48-f5cf1f6e57f0"
      unitRef="usd">43263000</us-gaap:PaymentsOfDividends>
    <us-gaap:PaymentsOfDividends
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzM3ODU_bb2fde66-242a-4e89-8914-6fc533298f83"
      unitRef="usd">390508000</us-gaap:PaymentsOfDividends>
    <us-gaap:PaymentsOfDividends
      contextRef="i22ac892990aa4be6bea90ca4813eba67_D20201228-20201228"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzM4MTI_2d1516a1-e767-4f65-b047-6b03e44065fd"
      unitRef="usd">351428000</us-gaap:PaymentsOfDividends>
    <us-gaap:PaymentsOfDividends
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzM4NTE_0f51e5cb-aeb9-4188-8378-f47aab36c6ba"
      unitRef="usd">35124000</us-gaap:PaymentsOfDividends>
    <us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzM3MTc_b9f49a2e-4956-4cd8-86b0-a79895711d81">Stock-Based Compensation&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Stock Plans&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company&#x2019;s stock-based awards that result in compensation expense consist of stock options and restricted stock units (RSUs). As of December&#160;31, 2021, the Company had 15,640,000 shares available for grant under its stock plans. Stock options are granted with an exercise price equal to the market value of the Company&#x2019;s common stock at the grant date and generally vest over &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzQxOQ_cac7f81a-55a4-43ac-b985-ca51aa05fe04"&gt;four&lt;/span&gt; or five years based on continuous employment and expire ten years from the grant date. RSUs generally vest upon three years of continuous employment or incrementally over such three-year period. Participants are not entitled to dividends on RSUs.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Stock Options&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the Company&#x2019;s stock option activity:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:43.409%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.223%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.223%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.223%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.226%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Shares&lt;br/&gt;(in&#160;thousands)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Weighted-&lt;br/&gt;Average&lt;br/&gt;Exercise&lt;br/&gt;Price&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Weighted-&lt;br/&gt;Average&lt;br/&gt;Remaining&lt;br/&gt;Contractual&lt;br/&gt;Term&lt;br/&gt;(in&#160;years)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Aggregate&lt;br/&gt;Intrinsic Value&lt;br/&gt;(in&#160;thousands)&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Outstanding as of December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;8,970&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;44.73&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Granted&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;564&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;88.62&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Exercised&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1,694)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;37.70&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Forfeited or expired&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(230)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;50.34&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Outstanding as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;7,610&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;49.38&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;6.57&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;222,053&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Exercisable as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;3,442&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;39.87&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;5.45&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;130,448&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Options vested or expected to vest as of&#160;&lt;br/&gt;&#160;December 31, 2021 (1)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;7,134&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;48.66&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;6.49&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;212,746&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt;padding-left:36pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;(1) In addition to the vested options, the Company expects a portion of the unvested options to vest at some point in the future. Options expected to vest are calculated by applying an estimated forfeiture rate to the unvested options.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The fair values of stock options granted in each period presented were estimated using the following weighted-average assumptions:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.561%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:54.847%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.996%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.143%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.146%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#ee2724;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Year&#160;Ended&#160;December&#160;31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#ee2724;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2019&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Risk-free rate&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;1.3&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1.4&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2.7&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Expected dividend yield&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;0.27&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;0.41&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;0.39&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Expected volatility&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;39&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;37&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;37&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Expected term (in years)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;6.0&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6.0&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5.3&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Risk-free rate&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The risk-free rate was based on a treasury instrument whose term was consistent with the contractual term of the option.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Expected dividend yield&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Generally, the current dividend yield is calculated by annualizing the cash dividend declared by the Company&#x2019;s Board of Directors and dividing that result by the closing stock price on the grant date.&#160;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Expected volatility&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The expected volatility was based on a combination of historical volatility of&#160;the Company&#x2019;s&#160;common stock over the contractual term of the option and implied volatility for traded options of the Company&#x2019;s stock.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Expected term&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The expected term was derived from the binomial lattice model from the impact of events that trigger exercises over time.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The weighted-average grant-date fair value of stock options granted was $33.79 in 2021, $19.62 in 2020, and $18.62 in 2019.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The total intrinsic value of stock options exercised was $80,369,000 in 2021, $166,796,000 in 2020, and $90,762,000 in 2019. The total fair value of stock options vested was $45,328,000 in 2021, $45,998,000 in 2020, and $38,974,000 in 2019.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Restricted Stock Units (RSUs)&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following tables summarizes the Company's RSU activity:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:10pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:62.496%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.666%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:19.808%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Shares&lt;br/&gt;(in&#160;thousands)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Weighted-Average&lt;br/&gt;Grant Date Fair Value&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Nonvested as of December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;554&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;51.27&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Granted&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;335&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;87.03&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Vested&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(16)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;57.31&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Forfeited or expired&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(50)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;58.47&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Nonvested as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;823&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;65.26&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The fair value of RSUs is determined based on the observable market price of the Company's stock on the grant date less the present value of expected future dividends. The weighted-average grant-date fair value of RSUs granted in 2020 and 2019 was $52.09 and $48.61, respectively. There were 16,000 RSUs that vested in 2021, and no RSUs that vested in 2020 and 2019.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Stock-Based Compensation Expense&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company stratifies its employee population into two groups: one consisting of senior management and another consisting of all other employees. The Company currently applies an estimated forfeiture rate of 8% to all unvested options for senior management and a rate of 12% for all other employees. Each year during the first quarter, the Company revises its forfeiture rate. This resulted in a decrease to compensation expense of $255,000 in 2021, an increase to compensation expense of $1,787,000 in 2020, and a decrease to compensation expense of $499,000 in 2019.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;As of December&#160;31, 2021, total unrecognized compensation expense related to non-vested stock-based awards, including stock options and RSUs, was $47,690,000, which is expected to be recognized over a weighted-average period of 1.4 years.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The total stock-based compensation expense and the related income tax benefit recognized was $43,774,000 and $6,764,000, respectively, in 2021, $42,661,000 and $6,569,000, respectively, in 2020, and $45,589,000 and $7,756,000, respectively, in 2019. Stock-based compensation expense recognized in 2020 included credits of $1,401,000 relating to grants cancelled as a result of the Company's workforce reduction in the second quarter of 2020. No compensation expense was capitalized in 2021, 2020, or 2019.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table presents the stock-based compensation expense by caption for each period presented on the Consolidated Statements of Operations (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.561%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:51.176%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.318%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.318%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.320%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#ee2724;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Year Ended December&#160;31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#ee2724;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2019&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Cost of revenue&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;1,345&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,365&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,504&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Research, development, and engineering&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;13,535&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;13,387&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;15,748&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Selling, general, and administrative&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;28,894&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;27,909&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;28,337&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;43,774&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;42,661&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;45,589&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant
      contextRef="i39707b072766401697c047f98d14f735_I20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzIxOQ_de54873d-0ed5-43f1-b06a-9e46d35171b3"
      unitRef="shares">15640000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1
      contextRef="idd5ac6d2068247fbaaf23d9582522e3a_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzQyNQ_ab9f4384-c9af-49f1-8ef4-2eeda50b6206">P5Y</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1>
    <cgnx:ExpirationPeriodOfStockOptionPlan
      contextRef="i45c675b042014dca8b974960686e1ed3_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzQ3MA_40016799-2a45-48b2-ba37-9201dca91763">P10Y</cgnx:ExpirationPeriodOfStockOptionPlan>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1
      contextRef="ib1a2499886a74a06992d20a3f6b53efb_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzUxOQ_5b682129-2934-41c7-aaad-2880575bfd93">P3Y</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1>
    <us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzM3MTU_fc83a782-130b-4479-bada-6bdd9cda16a7">&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the Company&#x2019;s stock option activity:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:43.409%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.223%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.223%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.223%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.226%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Shares&lt;br/&gt;(in&#160;thousands)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Weighted-&lt;br/&gt;Average&lt;br/&gt;Exercise&lt;br/&gt;Price&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Weighted-&lt;br/&gt;Average&lt;br/&gt;Remaining&lt;br/&gt;Contractual&lt;br/&gt;Term&lt;br/&gt;(in&#160;years)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Aggregate&lt;br/&gt;Intrinsic Value&lt;br/&gt;(in&#160;thousands)&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Outstanding as of December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;8,970&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;44.73&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Granted&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;564&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;88.62&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Exercised&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1,694)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;37.70&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Forfeited or expired&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(230)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;50.34&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Outstanding as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;7,610&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;49.38&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;6.57&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;222,053&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Exercisable as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;3,442&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;39.87&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;5.45&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;130,448&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Options vested or expected to vest as of&#160;&lt;br/&gt;&#160;December 31, 2021 (1)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;7,134&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;48.66&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;6.49&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;212,746&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt;padding-left:36pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;(1) In addition to the vested options, the Company expects a portion of the unvested options to vest at some point in the future. Options expected to vest are calculated by applying an estimated forfeiture rate to the unvested options.&lt;/span&gt;&lt;/div&gt;</us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzEtMS0xLTEtMjg4MDU_2331fc0f-89ad-4666-8d17-8ecf97ed1695"
      unitRef="shares">8970000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzEtMy0xLTEtMjg4MDU_3da45363-162b-446b-bdc0-4c5ba545accd"
      unitRef="usdPerShare">44.73</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriod
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzItMS0xLTEtMjg4MDU_e002c8d5-b59b-4483-b845-95155c975bbb"
      unitRef="shares">564000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriod>
    <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzItMy0xLTEtMjg4MDU_0c65a51a-ce4c-42cd-a7f3-825286e068d7"
      unitRef="usdPerShare">88.62</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice>
    <us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzMtMS0xLTEtMjg4MDU_918ea564-b5ab-4212-965b-3def5da77747"
      unitRef="shares">1694000</us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised>
    <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzMtMy0xLTEtMjg4MDU_1aa8ac03-d9ec-4979-93f6-c22f03d1534a"
      unitRef="usdPerShare">37.70</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzQtMS0xLTEtMjg4MDU_17cf905b-66ba-4e58-a5cd-88f5e37e5524"
      unitRef="shares">230000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzQtMy0xLTEtMjg4MDU_cd203d65-fc9e-4245-9b57-a78ac260725e"
      unitRef="usdPerShare">50.34</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzUtMS0xLTEtMjg4MDU_3e97f91a-5270-4a62-9212-4bb7e6ef70af"
      unitRef="shares">7610000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzUtMy0xLTEtMjg4MDU_be77dacc-eabb-4f93-9f60-a71993d6efe0"
      unitRef="usdPerShare">49.38</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzUtNS0xLTEtMjg4MDU_22fbd0e1-e175-40ac-888e-68bd46bf93a9">P6Y6M25D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzUtNy0xLTEtMjg4MDU_ebb91edc-8be9-4d18-9ad2-d1c21639949f"
      unitRef="usd">222053000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzYtMS0xLTEtMjg4MDU_7231e661-ba47-4145-b1d2-eb99cf90d07d"
      unitRef="shares">3442000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzYtMy0xLTEtMjg4MDU_c9491fc9-47d2-4a6e-8972-bfe59c343e56"
      unitRef="usdPerShare">39.87</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzYtNS0xLTEtMjg4MDU_8c4d24bb-b971-40be-8201-8c82aa2243f9">P5Y5M12D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1>
    <cgnx:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableAggregateIntrinsicValue
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzYtNy0xLTEtMjg4MDU_6ae28c09-6887-43c1-aa71-7fa37765e4b9"
      unitRef="usd">130448000</cgnx:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableAggregateIntrinsicValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestExercisableNumber
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzctMS0xLTEtMjg4MDU_93a32ce5-8d7a-49fd-b5be-3dba086217cb"
      unitRef="shares">7134000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestExercisableNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzctMy0xLTEtMjg4MDU_7fcb7365-304a-4ad7-8fd9-ee85ed1083d8"
      unitRef="usdPerShare">48.66</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzctNS0xLTEtMjg4MDU_8290432a-c870-46d4-b728-9529789fb409">P6Y5M26D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzctNy0xLTEtMjg4MDU_3ace5b06-4b1e-4860-96a1-ef92e3091b0c"
      unitRef="usd">212746000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue>
    <us-gaap:ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzM2OTg_d5c8b3bb-557f-4928-85a0-18a3da8f55e7">&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The fair values of stock options granted in each period presented were estimated using the following weighted-average assumptions:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.561%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:54.847%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.996%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.143%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.146%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#ee2724;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Year&#160;Ended&#160;December&#160;31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#ee2724;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2019&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Risk-free rate&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;1.3&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1.4&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2.7&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Expected dividend yield&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;0.27&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;0.41&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;0.39&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Expected volatility&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;39&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;37&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;37&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Expected term (in years)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;6.0&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6.0&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5.3&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="i45c675b042014dca8b974960686e1ed3_D20210101-20211231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTo2ZmVmNmJjNDY4ZjU0OGIyODY3ODk3OGNiMzEzZjJiYS90YWJsZXJhbmdlOjZmZWY2YmM0NjhmNTQ4YjI4Njc4OTc4Y2IzMTNmMmJhXzItMS0xLTEtMjg4MDU_e9d9273f-7933-435d-b3f4-a5ace6ab5ddf"
      unitRef="number">0.013</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="iefdedbfc9aff4869b115c5161b1da2bb_D20200101-20201231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTo2ZmVmNmJjNDY4ZjU0OGIyODY3ODk3OGNiMzEzZjJiYS90YWJsZXJhbmdlOjZmZWY2YmM0NjhmNTQ4YjI4Njc4OTc4Y2IzMTNmMmJhXzItMy0xLTEtMjg4MDU_c32dc394-7e97-44d3-bd0d-c242841c0c73"
      unitRef="number">0.014</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="i0d1c49bfe1e0495aa82309bb0b273324_D20190101-20191231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTo2ZmVmNmJjNDY4ZjU0OGIyODY3ODk3OGNiMzEzZjJiYS90YWJsZXJhbmdlOjZmZWY2YmM0NjhmNTQ4YjI4Njc4OTc4Y2IzMTNmMmJhXzItNS0xLTEtMjg4MDU_16e2f14e-3958-4168-86d4-d0aa356f96e8"
      unitRef="number">0.027</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate
      contextRef="i45c675b042014dca8b974960686e1ed3_D20210101-20211231"
      decimals="4"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTo2ZmVmNmJjNDY4ZjU0OGIyODY3ODk3OGNiMzEzZjJiYS90YWJsZXJhbmdlOjZmZWY2YmM0NjhmNTQ4YjI4Njc4OTc4Y2IzMTNmMmJhXzMtMS0xLTEtMjg4MDU_1b900f04-ed85-4599-98cc-25d6edb3acf2"
      unitRef="number">0.0027</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate
      contextRef="iefdedbfc9aff4869b115c5161b1da2bb_D20200101-20201231"
      decimals="4"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTo2ZmVmNmJjNDY4ZjU0OGIyODY3ODk3OGNiMzEzZjJiYS90YWJsZXJhbmdlOjZmZWY2YmM0NjhmNTQ4YjI4Njc4OTc4Y2IzMTNmMmJhXzMtMy0xLTEtMjg4MDU_ebf7ffd2-eab8-44ee-9019-427e127f64c8"
      unitRef="number">0.0041</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate
      contextRef="i0d1c49bfe1e0495aa82309bb0b273324_D20190101-20191231"
      decimals="4"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTo2ZmVmNmJjNDY4ZjU0OGIyODY3ODk3OGNiMzEzZjJiYS90YWJsZXJhbmdlOjZmZWY2YmM0NjhmNTQ4YjI4Njc4OTc4Y2IzMTNmMmJhXzMtNS0xLTEtMjg4MDU_a3d11c55-1a6a-4c89-a285-a039635d2a71"
      unitRef="number">0.0039</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="i45c675b042014dca8b974960686e1ed3_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTo2ZmVmNmJjNDY4ZjU0OGIyODY3ODk3OGNiMzEzZjJiYS90YWJsZXJhbmdlOjZmZWY2YmM0NjhmNTQ4YjI4Njc4OTc4Y2IzMTNmMmJhXzQtMS0xLTEtMjg4MDU_c9a7640a-b120-42d8-8335-29a7aa1ece86"
      unitRef="number">0.39</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="iefdedbfc9aff4869b115c5161b1da2bb_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTo2ZmVmNmJjNDY4ZjU0OGIyODY3ODk3OGNiMzEzZjJiYS90YWJsZXJhbmdlOjZmZWY2YmM0NjhmNTQ4YjI4Njc4OTc4Y2IzMTNmMmJhXzQtMy0xLTEtMjg4MDU_7afad64f-04ee-4ec9-ab6a-5b6edb430e21"
      unitRef="number">0.37</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="i0d1c49bfe1e0495aa82309bb0b273324_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTo2ZmVmNmJjNDY4ZjU0OGIyODY3ODk3OGNiMzEzZjJiYS90YWJsZXJhbmdlOjZmZWY2YmM0NjhmNTQ4YjI4Njc4OTc4Y2IzMTNmMmJhXzQtNS0xLTEtMjg4MDU_35423c34-a6c6-4b23-b302-12115317ba1f"
      unitRef="number">0.37</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
      contextRef="i45c675b042014dca8b974960686e1ed3_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTo2ZmVmNmJjNDY4ZjU0OGIyODY3ODk3OGNiMzEzZjJiYS90YWJsZXJhbmdlOjZmZWY2YmM0NjhmNTQ4YjI4Njc4OTc4Y2IzMTNmMmJhXzUtMS0xLTEtMjg4MDU_76a4b598-165c-4f26-9b70-2b1511d1ecca">P6Y</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
      contextRef="iefdedbfc9aff4869b115c5161b1da2bb_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTo2ZmVmNmJjNDY4ZjU0OGIyODY3ODk3OGNiMzEzZjJiYS90YWJsZXJhbmdlOjZmZWY2YmM0NjhmNTQ4YjI4Njc4OTc4Y2IzMTNmMmJhXzUtMy0xLTEtMjg4MDU_a1ad429d-4ef5-4f10-989d-b67a0a52a3d6">P6Y</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
      contextRef="i0d1c49bfe1e0495aa82309bb0b273324_D20190101-20191231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTo2ZmVmNmJjNDY4ZjU0OGIyODY3ODk3OGNiMzEzZjJiYS90YWJsZXJhbmdlOjZmZWY2YmM0NjhmNTQ4YjI4Njc4OTc4Y2IzMTNmMmJhXzUtNS0xLTEtMjg4MDU_fb29ad4b-736c-40ed-80af-53bb95cae8fb">P5Y3M18D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzE4OTc_1043856e-d6a7-489a-8a27-d59dd134c754"
      unitRef="usdPerShare">33.79</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzE5MDc_f8035c7d-6d18-4a57-b4c8-49261c445189"
      unitRef="usdPerShare">19.62</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzE5MjE_be3848b0-3b4d-45f9-9d20-83b69d9c28a8"
      unitRef="usdPerShare">18.62</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <cgnx:SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzE5ODg_ea76d5a9-e76b-4f18-b1e5-4caf15bf65c1"
      unitRef="usd">80369000</cgnx:SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue>
    <cgnx:SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzE5OTg_e5bac2a2-e29d-4402-8ff8-bf4d405efec3"
      unitRef="usd">166796000</cgnx:SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue>
    <cgnx:SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzIwMTI_c0302d0a-32d0-4d79-883c-4b483ab8a6de"
      unitRef="usd">90762000</cgnx:SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue>
    <cgnx:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzIwNzE_dd6d9184-0661-4e10-b756-6d3520cfb982"
      unitRef="usd">45328000</cgnx:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue>
    <cgnx:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzIwODE_54443fa6-f7ea-4428-a6da-56c25353515a"
      unitRef="usd">45998000</cgnx:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue>
    <cgnx:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzIwOTU_2f44fc4c-4931-476d-b2b3-e9d33e9c7bd4"
      unitRef="usd">38974000</cgnx:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue>
    <us-gaap:NonvestedRestrictedStockSharesActivityTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzM2OTk_74921bb4-2dd6-4302-b984-605c31b252ef">&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following tables summarizes the Company's RSU activity:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:10pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:62.496%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.666%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:19.808%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Shares&lt;br/&gt;(in&#160;thousands)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Weighted-Average&lt;br/&gt;Grant Date Fair Value&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Nonvested as of December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;554&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;51.27&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Granted&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;335&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;87.03&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Vested&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(16)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;57.31&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Forfeited or expired&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(50)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;58.47&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Nonvested as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;823&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;65.26&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:NonvestedRestrictedStockSharesActivityTableTextBlock>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber
      contextRef="i0d2d7b131c914aa3813c98711237ce0c_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTpiN2RjMjQ1ODIxZGY0MmJhYjdlOGRlZmU4OTgzM2NjNi90YWJsZXJhbmdlOmI3ZGMyNDU4MjFkZjQyYmFiN2U4ZGVmZTg5ODMzY2M2XzEtMS0xLTEtMjg4MDU_4215c67a-70ee-4564-b37a-239cb8bb0a11"
      unitRef="shares">554000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue
      contextRef="i0d2d7b131c914aa3813c98711237ce0c_I20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTpiN2RjMjQ1ODIxZGY0MmJhYjdlOGRlZmU4OTgzM2NjNi90YWJsZXJhbmdlOmI3ZGMyNDU4MjFkZjQyYmFiN2U4ZGVmZTg5ODMzY2M2XzEtMy0xLTEtMjg4MDU_47dbd58e-7b6f-4162-8fc0-0103ac5c29ce"
      unitRef="usdPerShare">51.27</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
      contextRef="i2a5930f20d2940f2a4357322a9224439_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTpiN2RjMjQ1ODIxZGY0MmJhYjdlOGRlZmU4OTgzM2NjNi90YWJsZXJhbmdlOmI3ZGMyNDU4MjFkZjQyYmFiN2U4ZGVmZTg5ODMzY2M2XzItMS0xLTEtMjg4MDU_187954e0-981d-4a97-951e-612428b7bb98"
      unitRef="shares">335000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="i2a5930f20d2940f2a4357322a9224439_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTpiN2RjMjQ1ODIxZGY0MmJhYjdlOGRlZmU4OTgzM2NjNi90YWJsZXJhbmdlOmI3ZGMyNDU4MjFkZjQyYmFiN2U4ZGVmZTg5ODMzY2M2XzItMy0xLTEtMjg4MDU_5e3c8d8e-284c-46bf-b638-0d7ba84c872d"
      unitRef="usdPerShare">87.03</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod
      contextRef="i2a5930f20d2940f2a4357322a9224439_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTpiN2RjMjQ1ODIxZGY0MmJhYjdlOGRlZmU4OTgzM2NjNi90YWJsZXJhbmdlOmI3ZGMyNDU4MjFkZjQyYmFiN2U4ZGVmZTg5ODMzY2M2XzMtMS0xLTEtMjg4MDU_df78c491-6670-4c1d-b2c3-fd90d10476df"
      unitRef="shares">16000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue
      contextRef="i2a5930f20d2940f2a4357322a9224439_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTpiN2RjMjQ1ODIxZGY0MmJhYjdlOGRlZmU4OTgzM2NjNi90YWJsZXJhbmdlOmI3ZGMyNDU4MjFkZjQyYmFiN2U4ZGVmZTg5ODMzY2M2XzMtMy0xLTEtMjg4MDU_2be6fa17-2241-4690-be4f-fa4e255702c8"
      unitRef="usdPerShare">57.31</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod
      contextRef="i2a5930f20d2940f2a4357322a9224439_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTpiN2RjMjQ1ODIxZGY0MmJhYjdlOGRlZmU4OTgzM2NjNi90YWJsZXJhbmdlOmI3ZGMyNDU4MjFkZjQyYmFiN2U4ZGVmZTg5ODMzY2M2XzQtMS0xLTEtMjg4MDU_9e1a60b3-1845-41c3-a1f2-0c677e2f34e7"
      unitRef="shares">50000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue
      contextRef="i2a5930f20d2940f2a4357322a9224439_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTpiN2RjMjQ1ODIxZGY0MmJhYjdlOGRlZmU4OTgzM2NjNi90YWJsZXJhbmdlOmI3ZGMyNDU4MjFkZjQyYmFiN2U4ZGVmZTg5ODMzY2M2XzQtMy0xLTEtMjg4MDU_0c461377-9da8-4b62-9a11-b138c0398826"
      unitRef="usdPerShare">58.47</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber
      contextRef="i2f16b1d9b8104848916e7ec017bf2b2a_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTpiN2RjMjQ1ODIxZGY0MmJhYjdlOGRlZmU4OTgzM2NjNi90YWJsZXJhbmdlOmI3ZGMyNDU4MjFkZjQyYmFiN2U4ZGVmZTg5ODMzY2M2XzUtMS0xLTEtMjg4MDU_5039049d-af46-4617-809c-f4720d958de2"
      unitRef="shares">823000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue
      contextRef="i2f16b1d9b8104848916e7ec017bf2b2a_I20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTpiN2RjMjQ1ODIxZGY0MmJhYjdlOGRlZmU4OTgzM2NjNi90YWJsZXJhbmdlOmI3ZGMyNDU4MjFkZjQyYmFiN2U4ZGVmZTg5ODMzY2M2XzUtMy0xLTEtMjg4MDU_6989c182-88ff-41df-baae-f377459a94b4"
      unitRef="usdPerShare">65.26</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="icace5d553dd64444a04f231db888b7ef_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzIyNzA_9db7a7b7-8304-4c9e-bd01-c756e054a407"
      unitRef="usdPerShare">52.09</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="ie01ba116a66c474d84265161be749d7d_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzEwOTk1MTE2MzE1ODM_435d9fd7-35b9-419f-b9fb-f20c757fd378"
      unitRef="usdPerShare">48.61</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod
      contextRef="i84da32e16b6e4d98bbab4cb608388e92_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzEwOTk1MTE2MzE3MTU_657c2efc-3548-4fcf-b6b2-34e1dc638d49"
      unitRef="shares">16000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod
      contextRef="ie01ba116a66c474d84265161be749d7d_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzIzMjE_1488a12b-a44e-44a9-ad8d-3bb0226c01f5"
      unitRef="shares">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod
      contextRef="icace5d553dd64444a04f231db888b7ef_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzIzMjE_f46a8775-5c71-4196-a141-1adb81a8b074"
      unitRef="shares">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod>
    <cgnx:NumberOfGroupsWithinEmployeePopulation
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzI0NTE_f840c723-ab31-429a-b161-9ab5c7fadb04"
      unitRef="group">2</cgnx:NumberOfGroupsWithinEmployeePopulation>
    <cgnx:EstimatedForfeitureRateForUnvestedOptionsForSeniorManagement
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzI2MDc_94adf9a4-c7b8-44c9-a5ad-2e868d80a7e5"
      unitRef="number">0.08</cgnx:EstimatedForfeitureRateForUnvestedOptionsForSeniorManagement>
    <cgnx:EstimatedForfeitureRateForUnvestedOptionsForAllNonSeniorManagement
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzI2NzA_b0a3f918-ce62-479c-9a6d-9083d43072f8"
      unitRef="number">0.12</cgnx:EstimatedForfeitureRateForUnvestedOptionsForAllNonSeniorManagement>
    <cgnx:IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzI4MzE_40190433-a2c8-4958-857f-bd5fa21b2062"
      unitRef="usd">255000</cgnx:IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates>
    <cgnx:IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzI4Nzk_2cd86aeb-a2fa-48cb-90b8-b78b657d66e6"
      unitRef="usd">1787000</cgnx:IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates>
    <cgnx:IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzI5MzI_ef8ffe60-f686-4fd4-b12d-12b03061ffa1"
      unitRef="usd">499000</cgnx:IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzMwODU_e3e7db1c-72b8-4ab8-8a05-7457c2b40ecb"
      unitRef="usd">47690000</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzMxNTg_d0b240c6-4649-4fa0-90ad-a0986d890522">P1Y4M24D</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzMyNjE_91a353a9-a1f0-427e-a45f-93341ecdcce1"
      unitRef="usd">43774000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzMzNzc_e9357901-b88f-4935-95ea-d630c2c904f6"
      unitRef="usd">6764000</us-gaap:EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzM0MDI_3a54ca76-4bcd-4050-9708-933c33b8bb6f"
      unitRef="usd">42661000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzM0MDk_ebcb4e9a-8e03-4844-a575-55c88e0cbb35"
      unitRef="usd">6569000</us-gaap:EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzM0Mzg_f4c0ef22-d993-41b7-a1e0-a3af7dc99872"
      unitRef="usd">45589000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzM0NDU_26fb8698-ff7f-4810-a489-61f63477f86d"
      unitRef="usd">7756000</us-gaap:EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense>
    <us-gaap:ShareBasedCompensation
      contextRef="ib02ea70179e047879c445fd8d0e9275f_D20200330-20200628"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzEwOTk1MTE2MzE5OTc_ed05ca7a-ab66-4d57-901f-ce6c35841f3f"
      unitRef="usd">1401000</us-gaap:ShareBasedCompensation>
    <us-gaap:ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzM3MTI_1fa6fcdf-f452-4462-bced-3a9250617cb1">&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table presents the stock-based compensation expense by caption for each period presented on the Consolidated Statements of Operations (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.561%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:51.176%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.318%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.318%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.320%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#ee2724;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Year Ended December&#160;31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#ee2724;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2019&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Cost of revenue&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;1,345&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,365&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,504&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Research, development, and engineering&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;13,535&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;13,387&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;15,748&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Selling, general, and administrative&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;28,894&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;27,909&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;28,337&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;43,774&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;42,661&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;45,589&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="ia5a436cb2a4b40208126b213a56803a5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTowNjQ4YTI2ZGI3NTE0MzliYjQ0NzkxMTVjZjA3ZmI1Ny90YWJsZXJhbmdlOjA2NDhhMjZkYjc1MTQzOWJiNDQ3OTExNWNmMDdmYjU3XzItMS0xLTEtMjg4MDU_9b9d6814-1941-4683-bf3e-a50c2d5102df"
      unitRef="usd">1345000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="id25aced7c5bb44fe800cc559f6166ff8_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTowNjQ4YTI2ZGI3NTE0MzliYjQ0NzkxMTVjZjA3ZmI1Ny90YWJsZXJhbmdlOjA2NDhhMjZkYjc1MTQzOWJiNDQ3OTExNWNmMDdmYjU3XzItMy0xLTEtMjg4MDU_68bc5b9a-551d-4bc6-8015-d95bf1f6996a"
      unitRef="usd">1365000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i2f165371239b461d8c3a62bad05a3b86_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTowNjQ4YTI2ZGI3NTE0MzliYjQ0NzkxMTVjZjA3ZmI1Ny90YWJsZXJhbmdlOjA2NDhhMjZkYjc1MTQzOWJiNDQ3OTExNWNmMDdmYjU3XzItNS0xLTEtMjg4MDU_1df58d7c-cdcf-45cf-a1cf-87524c61c922"
      unitRef="usd">1504000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="if8ab3d4c8f6a477f9e4c9e2b8888052a_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTowNjQ4YTI2ZGI3NTE0MzliYjQ0NzkxMTVjZjA3ZmI1Ny90YWJsZXJhbmdlOjA2NDhhMjZkYjc1MTQzOWJiNDQ3OTExNWNmMDdmYjU3XzMtMS0xLTEtMjg4MDU_fd2888ba-54ec-4e9d-924a-25d7994d2aa7"
      unitRef="usd">13535000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i6b6b154e38b2410788bce4314a3d47bf_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTowNjQ4YTI2ZGI3NTE0MzliYjQ0NzkxMTVjZjA3ZmI1Ny90YWJsZXJhbmdlOjA2NDhhMjZkYjc1MTQzOWJiNDQ3OTExNWNmMDdmYjU3XzMtMy0xLTEtMjg4MDU_5c072872-d6b1-4728-8238-9de9a3ccf30b"
      unitRef="usd">13387000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="id16927732c3f42ae9f82e1e9ddd307ed_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTowNjQ4YTI2ZGI3NTE0MzliYjQ0NzkxMTVjZjA3ZmI1Ny90YWJsZXJhbmdlOjA2NDhhMjZkYjc1MTQzOWJiNDQ3OTExNWNmMDdmYjU3XzMtNS0xLTEtMjg4MDU_bc8f78b7-a263-4c11-9f2a-cbef27ee3ed0"
      unitRef="usd">15748000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i52df1bc9391d4aeeb11bfa4d9b3d10b8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTowNjQ4YTI2ZGI3NTE0MzliYjQ0NzkxMTVjZjA3ZmI1Ny90YWJsZXJhbmdlOjA2NDhhMjZkYjc1MTQzOWJiNDQ3OTExNWNmMDdmYjU3XzQtMS0xLTEtMjg4MDU_86d22ad4-434c-4f82-85dd-6fea0e164a58"
      unitRef="usd">28894000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i5b1d16e2e3c74de6973268b28ba5fc9c_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTowNjQ4YTI2ZGI3NTE0MzliYjQ0NzkxMTVjZjA3ZmI1Ny90YWJsZXJhbmdlOjA2NDhhMjZkYjc1MTQzOWJiNDQ3OTExNWNmMDdmYjU3XzQtMy0xLTEtMjg4MDU_2e8c5937-e367-479f-a0ec-9f1deae108ec"
      unitRef="usd">27909000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="if66ef68195be46f98ef233ab367cb7c7_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTowNjQ4YTI2ZGI3NTE0MzliYjQ0NzkxMTVjZjA3ZmI1Ny90YWJsZXJhbmdlOjA2NDhhMjZkYjc1MTQzOWJiNDQ3OTExNWNmMDdmYjU3XzQtNS0xLTEtMjg4MDU_efc8d2d3-74e1-454d-b229-568665d36840"
      unitRef="usd">28337000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTowNjQ4YTI2ZGI3NTE0MzliYjQ0NzkxMTVjZjA3ZmI1Ny90YWJsZXJhbmdlOjA2NDhhMjZkYjc1MTQzOWJiNDQ3OTExNWNmMDdmYjU3XzYtMS0xLTEtMjg4MDU_3203b5d6-5d7b-40df-a6f0-3e8b7b77c7fa"
      unitRef="usd">43774000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTowNjQ4YTI2ZGI3NTE0MzliYjQ0NzkxMTVjZjA3ZmI1Ny90YWJsZXJhbmdlOjA2NDhhMjZkYjc1MTQzOWJiNDQ3OTExNWNmMDdmYjU3XzYtMy0xLTEtMjg4MDU_c7a8a496-3072-4157-bf81-0df30d0bc0a6"
      unitRef="usd">42661000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTowNjQ4YTI2ZGI3NTE0MzliYjQ0NzkxMTVjZjA3ZmI1Ny90YWJsZXJhbmdlOjA2NDhhMjZkYjc1MTQzOWJiNDQ3OTExNWNmMDdmYjU3XzYtNS0xLTEtMjg4MDU_6c29ccbd-2dd8-4970-8340-69d457daad9c"
      unitRef="usd">45589000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjYvZnJhZzozYjMxMzJiMzA5NTk0YmU4OTg5MTMwZDAwNmQ4YTVjYy90ZXh0cmVnaW9uOjNiMzEzMmIzMDk1OTRiZTg5ODkxMzBkMDA2ZDhhNWNjXzczNA_af1347f2-e889-4042-a627-61511b1d1a06">Employee Savings PlanUnder the Company's Employee Savings Plan, a defined contribution plan, all U.S. employees who have attained age 21 may contribute up to 100% of their pay on a pre-tax basis under the Company's Employee Savings Plan, subject to the annual dollar limitations established by the Internal Revenue Service ("IRS"). The Company matches 50% of the first 6% of pay an employee contributes. Company contributions vest 25%, 50%, 75%, and 100% after one, two, three, and four years of continuous employment with the Company, respectively. Company contributions totaled $2,898,000 in 2021, $2,636,000 in 2020, and $2,729,000 in 2019. Cognex stock is not an investment alternative and Company contributions are not made in the form of Cognex stock.</us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock>
    <cgnx:MinimumAgeToBeEligibleToDefinedContributionPlan
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjYvZnJhZzozYjMxMzJiMzA5NTk0YmU4OTg5MTMwZDAwNmQ4YTVjYy90ZXh0cmVnaW9uOjNiMzEzMmIzMDk1OTRiZTg5ODkxMzBkMDA2ZDhhNWNjXzE0OQ_10ac3430-45a5-4ff2-a71c-0d4832d6cbfd">P21Y</cgnx:MinimumAgeToBeEligibleToDefinedContributionPlan>
    <us-gaap:DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjYvZnJhZzozYjMxMzJiMzA5NTk0YmU4OTg5MTMwZDAwNmQ4YTVjYy90ZXh0cmVnaW9uOjNiMzEzMmIzMDk1OTRiZTg5ODkxMzBkMDA2ZDhhNWNjXzE3Mw_c013a6ec-f4e3-4fae-8000-f58b4c7e6a2d"
      unitRef="number">1</us-gaap:DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent>
    <us-gaap:DefinedContributionPlanEmployerMatchingContributionPercentOfMatch
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjYvZnJhZzozYjMxMzJiMzA5NTk0YmU4OTg5MTMwZDAwNmQ4YTVjYy90ZXh0cmVnaW9uOjNiMzEzMmIzMDk1OTRiZTg5ODkxMzBkMDA2ZDhhNWNjXzM2NQ_d55155f3-1e13-4115-8f88-51300f74388c"
      unitRef="number">0.50</us-gaap:DefinedContributionPlanEmployerMatchingContributionPercentOfMatch>
    <us-gaap:DefinedContributionPlanEmployerMatchingContributionPercent
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjYvZnJhZzozYjMxMzJiMzA5NTk0YmU4OTg5MTMwZDAwNmQ4YTVjYy90ZXh0cmVnaW9uOjNiMzEzMmIzMDk1OTRiZTg5ODkxMzBkMDA2ZDhhNWNjXzM4MQ_b15230f5-d4d4-45d5-9281-ab5e5fc9d70d"
      unitRef="number">0.06</us-gaap:DefinedContributionPlanEmployerMatchingContributionPercent>
    <cgnx:CompanyContributionsVestAtEndOfOneYear
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjYvZnJhZzozYjMxMzJiMzA5NTk0YmU4OTg5MTMwZDAwNmQ4YTVjYy90ZXh0cmVnaW9uOjNiMzEzMmIzMDk1OTRiZTg5ODkxMzBkMDA2ZDhhNWNjXzQ0Mw_67d6c804-17ca-4d6a-a2b2-a10eef965e84"
      unitRef="number">0.25</cgnx:CompanyContributionsVestAtEndOfOneYear>
    <cgnx:CompanyContributionsVestAtEndOfTwoYear
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjYvZnJhZzozYjMxMzJiMzA5NTk0YmU4OTg5MTMwZDAwNmQ4YTVjYy90ZXh0cmVnaW9uOjNiMzEzMmIzMDk1OTRiZTg5ODkxMzBkMDA2ZDhhNWNjXzQ0Nw_6ed33f74-f2e8-430d-a300-56e0e2442dd4"
      unitRef="number">0.50</cgnx:CompanyContributionsVestAtEndOfTwoYear>
    <cgnx:CompanyContributionsVestAtEndOfThreeYears
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjYvZnJhZzozYjMxMzJiMzA5NTk0YmU4OTg5MTMwZDAwNmQ4YTVjYy90ZXh0cmVnaW9uOjNiMzEzMmIzMDk1OTRiZTg5ODkxMzBkMDA2ZDhhNWNjXzQ1MQ_3eec1737-dec1-49bb-bd8e-c279058017f9"
      unitRef="number">0.75</cgnx:CompanyContributionsVestAtEndOfThreeYears>
    <cgnx:CompanyContributionsVestAtEndOfFourYears
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjYvZnJhZzozYjMxMzJiMzA5NTk0YmU4OTg5MTMwZDAwNmQ4YTVjYy90ZXh0cmVnaW9uOjNiMzEzMmIzMDk1OTRiZTg5ODkxMzBkMDA2ZDhhNWNjXzQ1OQ_4a7f83f7-6316-4c2b-b8f0-e3331800cc35"
      unitRef="number">1</cgnx:CompanyContributionsVestAtEndOfFourYears>
    <us-gaap:DefinedContributionPlanCostRecognized
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjYvZnJhZzozYjMxMzJiMzA5NTk0YmU4OTg5MTMwZDAwNmQ4YTVjYy90ZXh0cmVnaW9uOjNiMzEzMmIzMDk1OTRiZTg5ODkxMzBkMDA2ZDhhNWNjXzU4Nw_2f1b8875-c302-4257-8745-3436363021fd"
      unitRef="usd">2898000</us-gaap:DefinedContributionPlanCostRecognized>
    <us-gaap:DefinedContributionPlanCostRecognized
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjYvZnJhZzozYjMxMzJiMzA5NTk0YmU4OTg5MTMwZDAwNmQ4YTVjYy90ZXh0cmVnaW9uOjNiMzEzMmIzMDk1OTRiZTg5ODkxMzBkMDA2ZDhhNWNjXzU5Nw_7766a1eb-0ac0-4bdc-8b10-d4f876146f05"
      unitRef="usd">2636000</us-gaap:DefinedContributionPlanCostRecognized>
    <us-gaap:DefinedContributionPlanCostRecognized
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjYvZnJhZzozYjMxMzJiMzA5NTk0YmU4OTg5MTMwZDAwNmQ4YTVjYy90ZXh0cmVnaW9uOjNiMzEzMmIzMDk1OTRiZTg5ODkxMzBkMDA2ZDhhNWNjXzYxMQ_392c5b55-3b41-4e15-9863-b2cf4ba6e416"
      unitRef="usd">2729000</us-gaap:DefinedContributionPlanCostRecognized>
    <us-gaap:IncomeTaxDisclosureTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzg0ODU_c73f7911-5cdf-478d-b89d-80abe365eac2">Income Taxes&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Domestic income before taxes was $121,729,000 in 2021, $39,425,000 in 2020, and $31,396,000 in 2019. Foreign income before taxes was $197,171,000 in 2021, $147,486,000 in 2020, and $131,598,000 in 2019. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Income tax expense (benefit) consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:48.680%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.151%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.151%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.154%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Year Ended December&#160;31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2019&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Current:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="15" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Federal&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;27,870&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;160&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;15,854&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;State&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;5,372&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;921&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,108&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;8,406&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;13,197&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;30,670&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;41,648&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;14,278&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;48,632&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Deferred:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Federal&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(19,266)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(18,266)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;352,808&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;State&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(769)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(556)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;183&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;17,406&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;15,269&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(442,494)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(2,629)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(3,553)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(89,503)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;39,019&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;10,725&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(40,871)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;A reconciliation of the U.S. federal statutory corporate tax rate to the Company&#x2019;s income tax expense (benefit), or effective tax rate, was as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:62.296%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.613%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.613%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.614%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Year&#160;Ended&#160;December&#160;31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2019&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Income tax expense at U.S. federal statutory corporate tax rate&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;21&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;21&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;21&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;State income taxes, net of federal benefit&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;1&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign tax rate differential&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(5)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(6)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(9)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Tax credit&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(2)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Discrete tax benefit related to employee stock options&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(3)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(7)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(4)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Discrete tax benefit related to tax return filings&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(5)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;div&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:115%"&gt;Discrete tax expense related to German withholding&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Discrete tax expense related to migration of acquired IP&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;18&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Discrete tax benefit related to change in tax structure&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(268)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Discrete tax expense related to GILTI impact of change in tax structure&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;214&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Other discrete tax events&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Other&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;1&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Income tax expense (benefit)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;12&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(25)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Change in Accounting Policy&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:8pt;margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In 2019, the Company elected to change its method of accounting for the United States Global Intangible Low-Taxed Income (GILTI) tax from recording the tax impact in the period it is incurred to recognizing deferred taxes for temporary tax basis differences expected to reverse as GILTI tax in future years. The change is considered preferable, as it appropriately matches the Company's current and deferred income tax implications related to the change in international tax structure noted above.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:8pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The change in this accounting policy impacted the Company's 2019 reported results as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:8pt;margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:53.936%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.520%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.821%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.520%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.821%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.582%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"&gt;Statement of Operations&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#160;Year Ended December 31, 2019&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;As reported under the new accounting policy&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;As computed under the previous accounting policy&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Effect of change&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Income before income tax expense&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;162,994&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;162,994&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Income tax expense (benefit)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(40,871)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(393,317)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;352,446&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Net income&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;203,865&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;556,311&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(352,446)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr style="height:9pt"&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:3pt double #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:3pt double #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:3pt double #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="6" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Net income per weighted-average common and common-equivalent share:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Basic&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1.19&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3.25&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(2.06)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Diluted&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1.16&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3.17&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(2.01)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-bottom:8pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:53.936%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.520%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.821%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.520%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.821%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.582%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"&gt;Balance Sheet&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#160;December 31, 2019&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;As reported under the new accounting policy&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;As computed under the previous accounting policy&lt;br/&gt;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Effect of change&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Deferred tax assets&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;449,519&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;469,621&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(20,102)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Deferred tax liabilities&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;332,344&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;332,344&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-bottom:8pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:53.936%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.520%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.821%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.520%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.821%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.582%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"&gt;Statement of Shareholders' Equity&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#160;Year Ended December 31, 2019&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;As reported under the new accounting policy&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;As computed under the previous accounting policy&lt;br/&gt;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Effect of change&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Retained earnings&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;753,268&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,105,714&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(352,446)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Discrete Tax Items&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:8pt;margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Income tax expense included a decrease of $11,036,000 in 2021, $12,788,000 in 2020, and $6,472,000 in 2019 related to stock options, primarily from the excess tax benefit arising from the difference between the deduction for tax purposes and the compensation cost recognized for financial reporting purposes from stock option exercises. The Company cannot predict the level of stock option exercises by employees in future periods.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:8pt;margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Income tax expense in 2021 and 2020 also included discrete tax items related to the final true-up of the prior year's tax accrual upon filing the related tax return. In 2020, this included a tax benefit of $13,984,000 primarily to recognize a foreign tax benefit on certain gains taxed outside of the United States based on clarifications to rules relating to the use of foreign tax credits. This benefit was partially offset by tax expense for a transfer price adjustment in China of $3,267,000 and smaller tax expense adjustments related to foreign tax filings of $843,000.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:8pt;margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In 2020, interpretations of a German law relating to withholding taxes on intellectual property rights emerged. The Company conducted a careful review of the interpretation, submitted required tax filings, and believes it has adequate reserves for this German tax exposure.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In 2019, the Company made changes to its international tax structure as a result of legislation by the European Union regarding low tax structures that resulted in an intercompany sale of intellectual property. The Company recorded an associated deferred tax asset and income tax benefit of $437,500,000 in Ireland based on the fair value of the intellectual property, that is being realized over 15 years as future tax deductions. From a United States perspective, the sale was disregarded, and any future deductions claimed in Ireland were added back to taxable income as part of GILTI minimum tax. The Company recorded an associated deferred tax liability and income tax expense of $350,000,000, representing the GILTI minimum tax related to the fair value of the intellectual property. The result of these transactions was a net discrete tax benefit of $87,500,000. Management expects an immaterial impact on its current effective tax rate excluding discrete items in future years as a result of this change.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In 2019, in connection with the acquisition of Sualab, Co. Ltd., the Company migrated acquired intellectual property to certain subsidiaries to align with its corporate tax structure. As a result of this transaction, the Company recorded a discrete tax expense of $28,528,000, which included a reserve of $3,700,000 for certain related tax uncertainties. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Tax Reserves&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The changes in the reserve for income taxes, excluding gross interest and penalties, were as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:81.158%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:16.642%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance of reserve for income taxes as of December 31, 2019&lt;/span&gt;&lt;/td&gt;&lt;td style="padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;11,591&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross amounts of increases in unrecognized tax benefits as a result of tax positions taken in prior periods&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;162&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross amounts of increases in unrecognized tax benefits as a result of tax positions taken in the current period&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,383&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross amounts of decreases in unrecognized tax benefits as a result of the expiration of the applicable statutes of limitations&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1,184)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance of reserve for income taxes as of December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;13,952&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross amounts of decreases in unrecognized tax benefits as a result of tax positions taken in prior periods&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(280)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross amounts of increases in unrecognized tax benefits as a result of tax positions taken in prior periods&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;100&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross amounts of increases in unrecognized tax benefits as a result of tax positions taken in the current period&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;525&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross amounts of decreases in unrecognized tax benefits as a result of the expiration of the applicable statutes of limitations&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(485)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance of reserve for income taxes as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;13,812&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company&#x2019;s reserve for income taxes, including gross interest and penalties, was $15,808,000 as of December 31, 2021, which included $14,780,000 classified as a non-current liability and $1,028,000 recorded as a reduction to non-current deferred tax assets. The Company's reserve for income taxes, including gross interest and penalties, was $15,285,000 as of December 31, 2020, which included $14,257,000 classified as a non-current liability and $1,028,000 recorded as a reduction to non-current deferred tax assets. The amount of gross interest and penalties included in these balances was $1,996,000 and $1,332,000 as of December&#160;31, 2021 and 2020, respectively. If the Company&#x2019;s tax positions were sustained or the statutes of limitations related to certain positions expired, these reserves would be released and income tax expense would be reduced in a future period. As a result of the expiration of certain statutes of limitations, there is a potential that a portion of these reserves could be released, which would decrease income tax expense by approximately $2,000,000 to $3,500,000 over the next twelve months.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company has defined its major tax jurisdictions as the United States, Ireland, China, and Korea and within the United States, Massachusetts. The statutory tax rate is 12.5% in Ireland, 25% in China, and 22% in Korea, compared to the U.S. federal statutory corporate tax rate of 21%. These differences resulted in a favorable impact to the effective tax rate of 5 percentage points for 2021, 6 percentage points for 2020, and 9 percentage points for 2019. Management has determined that earnings from its legal entity in China will be indefinitely reinvested to provide local funding for growth, and that earnings from all other jurisdictions will not be indefinitely reinvested. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Within the United States, the tax years 2017 through 2020 remain open to examination by the Internal Revenue Service ("IRS") and various state taxing authorities. The tax years 2016 through 2020 remain open to examination by various taxing authorities in other jurisdictions in which the Company operates. The Company is under audit by the IRS for the tax years 2017 and 2018. Additionally, the Company is under audit by the Commonwealth of Massachusetts for tax years 2017 and 2018. Management believes the Company is adequately reserved for these &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;audits. The final determination of tax audits could result in favorable or unfavorable changes in our estimates. Any reserves associated with this audit period will not be released until the issue is settled or the audit is concluded. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Interest and penalties included in income tax expense were $281,000, $340,000, and $116,000 in 2021, 2020, and 2019, respectively.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Cash paid for income taxes totaled $49,435,000 in 2021, $33,695,000 in 2020, and $13,443,000 in 2019.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Deferred Tax Assets and Liabilities&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Deferred tax assets and liabilities, presented on a gross basis by jurisdiction, consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:66.495%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.735%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.737%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December&#160;31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross deferred tax assets:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Intangible asset in connection with change in tax structure&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;404,526&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;424,156&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Stock-based compensation expense&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;15,279&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;13,294&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Federal and state tax credit carryforwards&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;11,051&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;10,171&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Inventory and revenue related&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;7,426&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,976&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Bonuses, commissions, and other compensation&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;7,263&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,932&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Depreciation&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;5,395&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,211&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign net operating losses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;751&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;602&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Other&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;9,023&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,342&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross deferred tax assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;460,714&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;467,684&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Valuation allowance&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(8,188)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(8,568)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;452,526&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;459,116&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr style="height:14pt"&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross deferred tax liabilities:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;GILTI tax basis differences in connection with change in tax structure&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(327,725)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(339,364)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr style="height:14pt"&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Net deferred taxes&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;124,801&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;119,752&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;As of December 31, 2021, the Company had a deferred tax asset for foreign tax credit carryforwards of $1,730,000. These credits are considered to be realizable and will be utilized in a future period.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;As of December 31, 2021, the Company had a valuation allowance for state research and development tax credits of $11,750,000 that was not considered to be realizable. Should these credits be utilized in a future period, the reserve associated with these credits would be reversed in the period when it is determined that the credits can be utilized to offset future state income tax liabilities. As of December 31, 2021, the Company had state research and development tax credit carryforwards of $13,250,000, which will begin to expire for the 2025 tax return.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;While the deferred tax assets, net of valuation allowance, are not assured of realization, management has evaluated the realizability of these deferred tax assets and has determined that it is more likely than not that these assets will be realized. In reaching this conclusion, we have evaluated certain relevant criteria including the Company&#x2019;s historical profitability, current projections of future profitability, and the lives of tax credits, net operating losses, and other carryforwards. Should the Company fail to generate sufficient pre-tax profits in future periods, we may be required to establish valuation allowances against these deferred tax assets, resulting in a charge to current operations in the period of determination.&lt;/span&gt;&lt;/div&gt;</us-gaap:IncomeTaxDisclosureTextBlock>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzYw_01f26496-e6af-47de-adc6-915f782ebacf"
      unitRef="usd">121729000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzcw_ed94811a-9a41-47b5-9006-acf57af4c06e"
      unitRef="usd">39425000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzg0_68fb52a5-c23d-4839-bd51-829a8d862a53"
      unitRef="usd">31396000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzEyNg_c4f3dc51-cbae-4d9c-8ba4-0c680120a81b"
      unitRef="usd">197171000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzEzNg_02cf539d-dcc5-46d8-a4f6-ce256c938f4c"
      unitRef="usd">147486000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzE1MA_5fae3d1b-21fb-4049-9ddd-c7c3d312eff7"
      unitRef="usd">131598000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign>
    <us-gaap:ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzg1MDU_c1dae69d-ea71-4760-9db0-9883953fe039">&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Income tax expense (benefit) consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:48.680%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.151%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.151%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.154%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Year Ended December&#160;31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2019&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Current:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="15" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Federal&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;27,870&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;160&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;15,854&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;State&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;5,372&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;921&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,108&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;8,406&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;13,197&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;30,670&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;41,648&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;14,278&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;48,632&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Deferred:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Federal&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(19,266)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(18,266)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;352,808&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;State&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(769)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(556)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;183&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;17,406&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;15,269&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(442,494)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(2,629)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(3,553)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(89,503)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;39,019&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;10,725&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(40,871)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock>
    <us-gaap:CurrentFederalTaxExpenseBenefit
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzMtMS0xLTEtMjg4MDU_b4d3fc40-096d-4ae5-8211-5ac47b6d3027"
      unitRef="usd">27870000</us-gaap:CurrentFederalTaxExpenseBenefit>
    <us-gaap:CurrentFederalTaxExpenseBenefit
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzMtMy0xLTEtMjg4MDU_f5ea76b0-37e8-4f9b-aa88-d0f76a7feb9b"
      unitRef="usd">160000</us-gaap:CurrentFederalTaxExpenseBenefit>
    <us-gaap:CurrentFederalTaxExpenseBenefit
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzMtNS0xLTEtMjg4MDU_ac7beb9e-8df5-409c-80c3-b4e4b370e4f8"
      unitRef="usd">15854000</us-gaap:CurrentFederalTaxExpenseBenefit>
    <us-gaap:CurrentStateAndLocalTaxExpenseBenefit
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzQtMS0xLTEtMjg4MDU_eef03ef0-6a70-4657-977f-16221c0ed392"
      unitRef="usd">5372000</us-gaap:CurrentStateAndLocalTaxExpenseBenefit>
    <us-gaap:CurrentStateAndLocalTaxExpenseBenefit
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzQtMy0xLTEtMjg4MDU_45a3d871-b087-4f9f-8923-bb8aad392a55"
      unitRef="usd">921000</us-gaap:CurrentStateAndLocalTaxExpenseBenefit>
    <us-gaap:CurrentStateAndLocalTaxExpenseBenefit
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzQtNS0xLTEtMjg4MDU_83d24008-7077-49a2-b4ca-5f56779a8278"
      unitRef="usd">2108000</us-gaap:CurrentStateAndLocalTaxExpenseBenefit>
    <us-gaap:CurrentForeignTaxExpenseBenefit
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzUtMS0xLTEtMjg4MDU_944f2fc3-a1fb-43c3-932c-9b609ffd3923"
      unitRef="usd">8406000</us-gaap:CurrentForeignTaxExpenseBenefit>
    <us-gaap:CurrentForeignTaxExpenseBenefit
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzUtMy0xLTEtMjg4MDU_369d15ed-77b8-473e-b301-873768a75837"
      unitRef="usd">13197000</us-gaap:CurrentForeignTaxExpenseBenefit>
    <us-gaap:CurrentForeignTaxExpenseBenefit
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzUtNS0xLTEtMjg4MDU_8a1b9c54-e92e-4176-83ca-f2ad77339a4c"
      unitRef="usd">30670000</us-gaap:CurrentForeignTaxExpenseBenefit>
    <us-gaap:CurrentIncomeTaxExpenseBenefit
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzYtMS0xLTEtMjg4MDU_e3b295d5-5334-401c-bd6e-0e82a67611cd"
      unitRef="usd">41648000</us-gaap:CurrentIncomeTaxExpenseBenefit>
    <us-gaap:CurrentIncomeTaxExpenseBenefit
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzYtMy0xLTEtMjg4MDU_e906f24b-1c75-420e-be30-6a2863b17f05"
      unitRef="usd">14278000</us-gaap:CurrentIncomeTaxExpenseBenefit>
    <us-gaap:CurrentIncomeTaxExpenseBenefit
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzYtNS0xLTEtMjg4MDU_43b3a535-97eb-42f7-9896-5e15395bbdb7"
      unitRef="usd">48632000</us-gaap:CurrentIncomeTaxExpenseBenefit>
    <us-gaap:DeferredFederalIncomeTaxExpenseBenefit
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzgtMS0xLTEtMjg4MDU_e3066966-66f8-4115-bd0a-a7e4c39941a0"
      unitRef="usd">-19266000</us-gaap:DeferredFederalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredFederalIncomeTaxExpenseBenefit
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzgtMy0xLTEtMjg4MDU_36fe1fd3-cea1-4ecc-9218-a643a1312d5b"
      unitRef="usd">-18266000</us-gaap:DeferredFederalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredFederalIncomeTaxExpenseBenefit
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzgtNS0xLTEtMjg4MDU_748e878d-ef68-4152-9b92-388e4dfca823"
      unitRef="usd">352808000</us-gaap:DeferredFederalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzktMS0xLTEtMjg4MDU_f854523b-d901-4049-8b7f-c3cc635520f5"
      unitRef="usd">-769000</us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzktMy0xLTEtMjg4MDU_312a261c-f9d6-442b-906b-738290a7a1dc"
      unitRef="usd">-556000</us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzktNS0xLTEtMjg4MDU_21b221aa-ee6b-4642-99cb-9ea3ceb45c90"
      unitRef="usd">183000</us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredForeignIncomeTaxExpenseBenefit
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzEwLTEtMS0xLTI4ODA1_5400c127-2f4f-41f4-ba8a-367c0e763080"
      unitRef="usd">17406000</us-gaap:DeferredForeignIncomeTaxExpenseBenefit>
    <us-gaap:DeferredForeignIncomeTaxExpenseBenefit
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzEwLTMtMS0xLTI4ODA1_78843ee9-4d35-4812-a100-bf3b2c09c2bf"
      unitRef="usd">15269000</us-gaap:DeferredForeignIncomeTaxExpenseBenefit>
    <us-gaap:DeferredForeignIncomeTaxExpenseBenefit
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzEwLTUtMS0xLTI4ODA1_69da7260-83ad-4299-a25a-842f5b95daa4"
      unitRef="usd">-442494000</us-gaap:DeferredForeignIncomeTaxExpenseBenefit>
    <us-gaap:DeferredIncomeTaxExpenseBenefit
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzExLTEtMS0xLTI4ODA1_e4b44265-f153-4b5b-ace8-3519fb22ae13"
      unitRef="usd">-2629000</us-gaap:DeferredIncomeTaxExpenseBenefit>
    <us-gaap:DeferredIncomeTaxExpenseBenefit
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzExLTMtMS0xLTI4ODA1_2448e1e5-fc22-4bf1-a9d9-b2e0de0804d0"
      unitRef="usd">-3553000</us-gaap:DeferredIncomeTaxExpenseBenefit>
    <us-gaap:DeferredIncomeTaxExpenseBenefit
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzExLTUtMS0xLTI4ODA1_88ec9e3b-f7de-4662-a917-ba41aac6f8cb"
      unitRef="usd">-89503000</us-gaap:DeferredIncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzEyLTEtMS0xLTI4ODA1_579d746c-59ca-470d-ac61-dc40e3f04d0c"
      unitRef="usd">39019000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzEyLTMtMS0xLTI4ODA1_32748354-bff6-465f-afa6-7ad53a699120"
      unitRef="usd">10725000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzEyLTUtMS0xLTI4ODA1_ea3c9dba-9590-4051-90bd-40eda09926bb"
      unitRef="usd">-40871000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzg1MjM_f41c2f11-e2cc-44da-9c99-88beb0367e11">&lt;div style="margin-top:4pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;A reconciliation of the U.S. federal statutory corporate tax rate to the Company&#x2019;s income tax expense (benefit), or effective tax rate, was as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:62.296%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.613%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.613%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.614%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Year&#160;Ended&#160;December&#160;31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2019&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Income tax expense at U.S. federal statutory corporate tax rate&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;21&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;21&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;21&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;State income taxes, net of federal benefit&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;1&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign tax rate differential&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(5)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(6)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(9)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Tax credit&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(2)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Discrete tax benefit related to employee stock options&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(3)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(7)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(4)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Discrete tax benefit related to tax return filings&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(5)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;div&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:115%"&gt;Discrete tax expense related to German withholding&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Discrete tax expense related to migration of acquired IP&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;18&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Discrete tax benefit related to change in tax structure&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(268)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Discrete tax expense related to GILTI impact of change in tax structure&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;214&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Other discrete tax events&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Other&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;1&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Income tax expense (benefit)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;12&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(25)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock>
    <us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzItMS0xLTEtMjg4MDU_41b592fc-4833-4245-bcc4-3500fc9b12a3"
      unitRef="number">0.21</us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate>
    <us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzItMy0xLTEtMjg4MDU_d8a9a86e-d3a4-4968-a616-1cfdf59b04b7"
      unitRef="number">0.21</us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate>
    <us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzItNS0xLTEtMjg4MDU_3f25d1cf-79ab-4436-8c2e-5da31c3e4042"
      unitRef="number">0.21</us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate>
    <us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzMtMS0xLTEtMjg4MDU_d98d1311-03f9-4e42-afcd-33a91b34dabc"
      unitRef="number">0.01</us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes>
    <us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzMtMy0xLTEtMjg4MDU_6c487358-a325-484d-b1aa-a7c350dafc68"
      unitRef="number">0.01</us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes>
    <us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzMtNS0xLTEtMjg4MDU_2919218e-b7c8-43f1-990f-2d041b95a787"
      unitRef="number">0.02</us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes>
    <us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzQtMS0xLTEtMjg4MDU_db7c5db6-5922-44ce-ad3c-681d46a5ba20"
      unitRef="number">-0.05</us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential>
    <us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzQtMy0xLTEtMjg4MDU_a116b0da-0a0a-4cbf-8cdc-22ceedb8fd37"
      unitRef="number">-0.06</us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential>
    <us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzQtNS0xLTEtMjg4MDU_d1fb5a9d-f106-41eb-9e7d-514b2dae7f1e"
      unitRef="number">-0.09</us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxCredits
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzUtMS0xLTEtMjg4MDU_8fc5c00d-f4ad-4540-8c8e-625ce228d838"
      unitRef="number">0.02</us-gaap:EffectiveIncomeTaxRateReconciliationTaxCredits>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxCredits
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzUtMy0xLTEtMjg4MDU_c43ad427-d45f-4833-8519-6e93b5b4c35d"
      unitRef="number">0.01</us-gaap:EffectiveIncomeTaxRateReconciliationTaxCredits>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxCredits
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzUtNS0xLTEtMjg4MDU_f9ec83ee-a4fd-4a48-b200-1dcbff8e0d9d"
      unitRef="number">0.01</us-gaap:EffectiveIncomeTaxRateReconciliationTaxCredits>
    <us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzYtMS0xLTEtMjg4MDU_45ba0e7e-5800-47e0-93c9-c9a2ee478a6b"
      unitRef="number">0.03</us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent>
    <us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzYtMy0xLTEtMjg4MDU_b459da30-1017-4f43-b373-302f440e0f85"
      unitRef="number">0.07</us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent>
    <us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzYtNS0xLTEtMjg4MDU_2d47bc4c-383b-4591-8882-e6fc90640a10"
      unitRef="number">0.04</us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxSettlements
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzctMS0xLTEtMjg4MDU_1ff6f22b-3455-4c54-81df-f0525e2bbc1c"
      unitRef="number">-0.01</us-gaap:EffectiveIncomeTaxRateReconciliationTaxSettlements>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxSettlements
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzctMy0xLTEtMjg4MDU_af4c8482-f7ee-43a9-bbc7-a44250a51288"
      unitRef="number">-0.05</us-gaap:EffectiveIncomeTaxRateReconciliationTaxSettlements>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxSettlements
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzctNS0xLTEtMjg4MDU_a0117afd-9e50-432d-833a-ee139f225690"
      unitRef="number">0</us-gaap:EffectiveIncomeTaxRateReconciliationTaxSettlements>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxSettlementsForeign
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzgtMS0xLTEtMjg4MDU_5e7ed789-10f2-48ea-9dd7-1dd515be1103"
      unitRef="number">0</us-gaap:EffectiveIncomeTaxRateReconciliationTaxSettlementsForeign>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxSettlementsForeign
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzgtMy0xLTEtMjg4MDU_7aacf694-4611-457d-9d9b-d202031d9a20"
      unitRef="number">0.01</us-gaap:EffectiveIncomeTaxRateReconciliationTaxSettlementsForeign>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxSettlementsForeign
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzgtNS0xLTEtMjg4MDU_c8eb4369-3057-46fa-94d5-b9e1c6a77fdb"
      unitRef="number">0</us-gaap:EffectiveIncomeTaxRateReconciliationTaxSettlementsForeign>
    <cgnx:EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzEwLTEtMS0xLTI4ODA1_b63f568e-faba-4759-b403-1421ed3e24aa"
      unitRef="number">0</cgnx:EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty>
    <cgnx:EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzEwLTMtMS0xLTI4ODA1_00f2f91b-37d3-4f3d-bf5f-b386e144f6e6"
      unitRef="number">0</cgnx:EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty>
    <cgnx:EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzEwLTUtMS0xLTI4ODA1_efb6df13-75b4-489f-828b-d0c4d41b5236"
      unitRef="number">0.18</cgnx:EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty>
    <us-gaap:EffectiveIncomeTaxRateReconciliationChangeInEnactedTaxRate
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzExLTEtMS0xLTI4ODA1_f8515d95-8061-4544-9ca9-b9bf7ef2cbd6"
      unitRef="number">0</us-gaap:EffectiveIncomeTaxRateReconciliationChangeInEnactedTaxRate>
    <us-gaap:EffectiveIncomeTaxRateReconciliationChangeInEnactedTaxRate
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzExLTMtMS0xLTI4ODA1_cd253062-ddbb-4853-9bd6-81fe99a37064"
      unitRef="number">0</us-gaap:EffectiveIncomeTaxRateReconciliationChangeInEnactedTaxRate>
    <us-gaap:EffectiveIncomeTaxRateReconciliationChangeInEnactedTaxRate
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzExLTUtMS0xLTI4ODA1_d6cb9a53-5f49-4fb0-ac67-84f2985176ae"
      unitRef="number">-2.68</us-gaap:EffectiveIncomeTaxRateReconciliationChangeInEnactedTaxRate>
    <cgnx:EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzEyLTEtMS0xLTI4ODA1_34458d96-2e97-4d51-b598-14ed3ac01af5"
      unitRef="number">0</cgnx:EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent>
    <cgnx:EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzEyLTMtMS0xLTI4ODA1_788fc85d-22fa-4355-b33e-743ae6833e7d"
      unitRef="number">0</cgnx:EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent>
    <cgnx:EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzEyLTUtMS0xLTI4ODA1_f28ce59f-fd46-416e-b9f1-facc35997219"
      unitRef="number">2.14</cgnx:EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent>
    <us-gaap:EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzE0LTEtMS0xLTI4ODA1_fe915573-d6dd-4922-a1e8-ebbcfdffc6f7"
      unitRef="number">0</us-gaap:EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent>
    <us-gaap:EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzE0LTMtMS0xLTI4ODA1_1753b2aa-e580-440c-ac63-7bd6fa615e3c"
      unitRef="number">0</us-gaap:EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent>
    <us-gaap:EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzE0LTUtMS0xLTI4ODA1_1cddc0f7-b3eb-4189-b5d4-cd3e7268682c"
      unitRef="number">-0.01</us-gaap:EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent>
    <us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzE1LTEtMS0xLTI4ODA1_2bb93242-02e3-4da3-8ee3-66c6f1a50e32"
      unitRef="number">0.01</us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments>
    <us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzE1LTMtMS0xLTI4ODA1_1d41b714-c997-46f1-996f-dfc9a911c701"
      unitRef="number">0.02</us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments>
    <us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzE1LTUtMS0xLTI4ODA1_ae2eade7-178e-4ac0-ac12-f9a25ebb8ea5"
      unitRef="number">0.03</us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments>
    <us-gaap:EffectiveIncomeTaxRateContinuingOperations
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzE2LTEtMS0xLTI4ODA1_57f83aa1-fdf5-4929-bbe4-655385dacc7d"
      unitRef="number">0.12</us-gaap:EffectiveIncomeTaxRateContinuingOperations>
    <us-gaap:EffectiveIncomeTaxRateContinuingOperations
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzE2LTMtMS0xLTI4ODA1_74a6c74e-b8c5-454b-b5fb-aafb6b964009"
      unitRef="number">0.06</us-gaap:EffectiveIncomeTaxRateContinuingOperations>
    <us-gaap:EffectiveIncomeTaxRateContinuingOperations
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzE2LTUtMS0xLTI4ODA1_57055a61-3699-4825-8e8a-a1e987d5ec65"
      unitRef="number">-0.25</us-gaap:EffectiveIncomeTaxRateContinuingOperations>
    <us-gaap:ScheduleOfChangeInAccountingEstimateTextBlock
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzg0ODY_09d6c586-98cd-4ead-92ef-b9362a527f1c">&lt;div style="margin-bottom:8pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The change in this accounting policy impacted the Company's 2019 reported results as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:8pt;margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:53.936%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.520%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.821%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.520%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.821%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.582%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"&gt;Statement of Operations&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#160;Year Ended December 31, 2019&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;As reported under the new accounting policy&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;As computed under the previous accounting policy&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Effect of change&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Income before income tax expense&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;162,994&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;162,994&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Income tax expense (benefit)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(40,871)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(393,317)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;352,446&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Net income&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;203,865&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;556,311&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(352,446)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr style="height:9pt"&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:3pt double #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:3pt double #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:3pt double #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="6" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Net income per weighted-average common and common-equivalent share:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Basic&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1.19&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3.25&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(2.06)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Diluted&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1.16&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3.17&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(2.01)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-bottom:8pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:53.936%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.520%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.821%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.520%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.821%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.582%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"&gt;Balance Sheet&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#160;December 31, 2019&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;As reported under the new accounting policy&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;As computed under the previous accounting policy&lt;br/&gt;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Effect of change&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Deferred tax assets&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;449,519&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;469,621&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(20,102)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Deferred tax liabilities&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;332,344&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;332,344&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-bottom:8pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:53.936%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.520%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.821%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.520%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.821%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.582%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"&gt;Statement of Shareholders' Equity&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#160;Year Ended December 31, 2019&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;As reported under the new accounting policy&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;As computed under the previous accounting policy&lt;br/&gt;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Effect of change&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Retained earnings&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;753,268&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,105,714&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(352,446)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfChangeInAccountingEstimateTextBlock>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MjUyYWI1NzAyM2Q0NTE2YmY1MjU5NDFmYTRjN2UwNC90YWJsZXJhbmdlOjgyNTJhYjU3MDIzZDQ1MTZiZjUyNTk0MWZhNGM3ZTA0XzMtMS0xLTEtMjg4MDU_e589dbeb-1c5c-4204-aa99-488972bc8ae7"
      unitRef="usd">162994000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="i9568c4e4a0874adbbd54fef546d68a10_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MjUyYWI1NzAyM2Q0NTE2YmY1MjU5NDFmYTRjN2UwNC90YWJsZXJhbmdlOjgyNTJhYjU3MDIzZDQ1MTZiZjUyNTk0MWZhNGM3ZTA0XzMtMy0xLTEtMjg4MDU_d995ea18-8495-4fbb-88b1-31f1ecd76df3"
      unitRef="usd">162994000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="i4e18898fe1bc40759e924f6337eb36ea_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MjUyYWI1NzAyM2Q0NTE2YmY1MjU5NDFmYTRjN2UwNC90YWJsZXJhbmdlOjgyNTJhYjU3MDIzZDQ1MTZiZjUyNTk0MWZhNGM3ZTA0XzMtNS0xLTEtMjg4MDU_c585896d-a4b6-4e38-bfd2-ef9e3d6ac161"
      unitRef="usd">0</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MjUyYWI1NzAyM2Q0NTE2YmY1MjU5NDFmYTRjN2UwNC90YWJsZXJhbmdlOjgyNTJhYjU3MDIzZDQ1MTZiZjUyNTk0MWZhNGM3ZTA0XzQtMS0xLTEtMjg4MDU_9600fdc1-1a61-40d1-9dbf-912f39655add"
      unitRef="usd">-40871000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="i9568c4e4a0874adbbd54fef546d68a10_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MjUyYWI1NzAyM2Q0NTE2YmY1MjU5NDFmYTRjN2UwNC90YWJsZXJhbmdlOjgyNTJhYjU3MDIzZDQ1MTZiZjUyNTk0MWZhNGM3ZTA0XzQtMy0xLTEtMjg4MDU_c6366db9-c0ed-4f77-90e3-9c66f3482b6c"
      unitRef="usd">-393317000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="i4e18898fe1bc40759e924f6337eb36ea_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MjUyYWI1NzAyM2Q0NTE2YmY1MjU5NDFmYTRjN2UwNC90YWJsZXJhbmdlOjgyNTJhYjU3MDIzZDQ1MTZiZjUyNTk0MWZhNGM3ZTA0XzQtNS0xLTEtMjg4MDU_d0172786-0bca-40f9-a86d-cb14ffb01f52"
      unitRef="usd">352446000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:NetIncomeLoss
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MjUyYWI1NzAyM2Q0NTE2YmY1MjU5NDFmYTRjN2UwNC90YWJsZXJhbmdlOjgyNTJhYjU3MDIzZDQ1MTZiZjUyNTk0MWZhNGM3ZTA0XzUtMS0xLTEtMjg4MDU_2506ecde-e514-42d3-afd7-f66fcc79cc42"
      unitRef="usd">203865000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i9568c4e4a0874adbbd54fef546d68a10_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MjUyYWI1NzAyM2Q0NTE2YmY1MjU5NDFmYTRjN2UwNC90YWJsZXJhbmdlOjgyNTJhYjU3MDIzZDQ1MTZiZjUyNTk0MWZhNGM3ZTA0XzUtMy0xLTEtMjg4MDU_f3e25805-ceff-4669-9b6b-b134217caa23"
      unitRef="usd">556311000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i4e18898fe1bc40759e924f6337eb36ea_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MjUyYWI1NzAyM2Q0NTE2YmY1MjU5NDFmYTRjN2UwNC90YWJsZXJhbmdlOjgyNTJhYjU3MDIzZDQ1MTZiZjUyNTk0MWZhNGM3ZTA0XzUtNS0xLTEtMjg4MDU_05730576-ae44-45b4-afed-3833970b78e7"
      unitRef="usd">-352446000</us-gaap:NetIncomeLoss>
    <us-gaap:EarningsPerShareBasic
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MjUyYWI1NzAyM2Q0NTE2YmY1MjU5NDFmYTRjN2UwNC90YWJsZXJhbmdlOjgyNTJhYjU3MDIzZDQ1MTZiZjUyNTk0MWZhNGM3ZTA0XzgtMS0xLTEtMjg4MDU_879ced48-c03e-4c2b-a509-8079da797de4"
      unitRef="usdPerShare">1.19</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="i9568c4e4a0874adbbd54fef546d68a10_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MjUyYWI1NzAyM2Q0NTE2YmY1MjU5NDFmYTRjN2UwNC90YWJsZXJhbmdlOjgyNTJhYjU3MDIzZDQ1MTZiZjUyNTk0MWZhNGM3ZTA0XzgtMy0xLTEtMjg4MDU_c4bab9b6-9db6-496f-a129-e1fd9800166f"
      unitRef="usdPerShare">3.25</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="i4e18898fe1bc40759e924f6337eb36ea_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MjUyYWI1NzAyM2Q0NTE2YmY1MjU5NDFmYTRjN2UwNC90YWJsZXJhbmdlOjgyNTJhYjU3MDIzZDQ1MTZiZjUyNTk0MWZhNGM3ZTA0XzgtNS0xLTEtMjg4MDU_0e1774fd-66fd-4e91-8cde-79fc37f15fc4"
      unitRef="usdPerShare">-2.06</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareDiluted
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MjUyYWI1NzAyM2Q0NTE2YmY1MjU5NDFmYTRjN2UwNC90YWJsZXJhbmdlOjgyNTJhYjU3MDIzZDQ1MTZiZjUyNTk0MWZhNGM3ZTA0XzktMS0xLTEtMjg4MDU_f1b424df-7e10-4ed6-ab6b-b0ee8ec8beb8"
      unitRef="usdPerShare">1.16</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="i9568c4e4a0874adbbd54fef546d68a10_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MjUyYWI1NzAyM2Q0NTE2YmY1MjU5NDFmYTRjN2UwNC90YWJsZXJhbmdlOjgyNTJhYjU3MDIzZDQ1MTZiZjUyNTk0MWZhNGM3ZTA0XzktMy0xLTEtMjg4MDU_bfaeb174-d9f8-4979-91fc-c8d7cfef2372"
      unitRef="usdPerShare">3.17</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="i4e18898fe1bc40759e924f6337eb36ea_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MjUyYWI1NzAyM2Q0NTE2YmY1MjU5NDFmYTRjN2UwNC90YWJsZXJhbmdlOjgyNTJhYjU3MDIzZDQ1MTZiZjUyNTk0MWZhNGM3ZTA0XzktNS0xLTEtMjg4MDU_f716c406-f7fd-4d15-aa66-ff5f39b33438"
      unitRef="usdPerShare">-2.01</us-gaap:EarningsPerShareDiluted>
    <us-gaap:DeferredTaxAssetsGross
      contextRef="ia991b13c7b074439964a26d579235ee4_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTpmNTk3MTNiMWE3OGM0MzcyYWFiZDMyZjU0ODQwNGRmMy90YWJsZXJhbmdlOmY1OTcxM2IxYTc4YzQzNzJhYWJkMzJmNTQ4NDA0ZGYzXzMtMS0xLTEtMjg4MDU_7400f06f-1240-4d3c-b031-a0a963daeffc"
      unitRef="usd">449519000</us-gaap:DeferredTaxAssetsGross>
    <us-gaap:DeferredTaxAssetsGross
      contextRef="i210d844bbf8c44ac9ab4092887e0fc9a_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTpmNTk3MTNiMWE3OGM0MzcyYWFiZDMyZjU0ODQwNGRmMy90YWJsZXJhbmdlOmY1OTcxM2IxYTc4YzQzNzJhYWJkMzJmNTQ4NDA0ZGYzXzMtMy0xLTEtMjg4MDU_3dca24d5-d2d7-4ff4-ad39-4e94ac6a73f4"
      unitRef="usd">469621000</us-gaap:DeferredTaxAssetsGross>
    <us-gaap:DeferredTaxAssetsGross
      contextRef="i22f2ff4a0c6b4d62832ca2df6fbe48a5_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTpmNTk3MTNiMWE3OGM0MzcyYWFiZDMyZjU0ODQwNGRmMy90YWJsZXJhbmdlOmY1OTcxM2IxYTc4YzQzNzJhYWJkMzJmNTQ4NDA0ZGYzXzMtNS0xLTEtMjg4MDU_b640a61f-eaeb-4a39-ab25-e25af2805e42"
      unitRef="usd">-20102000</us-gaap:DeferredTaxAssetsGross>
    <us-gaap:DeferredIncomeTaxLiabilities
      contextRef="ia991b13c7b074439964a26d579235ee4_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTpmNTk3MTNiMWE3OGM0MzcyYWFiZDMyZjU0ODQwNGRmMy90YWJsZXJhbmdlOmY1OTcxM2IxYTc4YzQzNzJhYWJkMzJmNTQ4NDA0ZGYzXzQtMS0xLTEtMjg4MDU_c2a5dc30-2d2e-4c64-b766-05e24f81f3f0"
      unitRef="usd">332344000</us-gaap:DeferredIncomeTaxLiabilities>
    <us-gaap:DeferredIncomeTaxLiabilities
      contextRef="i210d844bbf8c44ac9ab4092887e0fc9a_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTpmNTk3MTNiMWE3OGM0MzcyYWFiZDMyZjU0ODQwNGRmMy90YWJsZXJhbmdlOmY1OTcxM2IxYTc4YzQzNzJhYWJkMzJmNTQ4NDA0ZGYzXzQtMy0xLTEtMjg4MDU_64da8b50-4024-4ba2-9b96-40f62b82a81a"
      unitRef="usd">0</us-gaap:DeferredIncomeTaxLiabilities>
    <us-gaap:DeferredIncomeTaxLiabilities
      contextRef="i22f2ff4a0c6b4d62832ca2df6fbe48a5_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTpmNTk3MTNiMWE3OGM0MzcyYWFiZDMyZjU0ODQwNGRmMy90YWJsZXJhbmdlOmY1OTcxM2IxYTc4YzQzNzJhYWJkMzJmNTQ4NDA0ZGYzXzQtNS0xLTEtMjg4MDU_7fe12834-368d-4da4-a073-1c00ad492c02"
      unitRef="usd">332344000</us-gaap:DeferredIncomeTaxLiabilities>
    <us-gaap:RetainedEarningsAccumulatedDeficit
      contextRef="ia991b13c7b074439964a26d579235ee4_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTplZmMwYWQ3YzI3NzA0YWQ5ODBjNjg0ZTFmZDI1YTY2Mi90YWJsZXJhbmdlOmVmYzBhZDdjMjc3MDRhZDk4MGM2ODRlMWZkMjVhNjYyXzMtMS0xLTEtMjg4MDU_2cbdc561-6eb3-45e6-8f42-10ebcb6996cb"
      unitRef="usd">753268000</us-gaap:RetainedEarningsAccumulatedDeficit>
    <us-gaap:RetainedEarningsAccumulatedDeficit
      contextRef="i210d844bbf8c44ac9ab4092887e0fc9a_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTplZmMwYWQ3YzI3NzA0YWQ5ODBjNjg0ZTFmZDI1YTY2Mi90YWJsZXJhbmdlOmVmYzBhZDdjMjc3MDRhZDk4MGM2ODRlMWZkMjVhNjYyXzMtMy0xLTEtMjg4MDU_aa43fb26-1343-40aa-81f7-96940ba5d4d8"
      unitRef="usd">1105714000</us-gaap:RetainedEarningsAccumulatedDeficit>
    <us-gaap:RetainedEarningsAccumulatedDeficit
      contextRef="i22f2ff4a0c6b4d62832ca2df6fbe48a5_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTplZmMwYWQ3YzI3NzA0YWQ5ODBjNjg0ZTFmZDI1YTY2Mi90YWJsZXJhbmdlOmVmYzBhZDdjMjc3MDRhZDk4MGM2ODRlMWZkMjVhNjYyXzMtNS0xLTEtMjg4MDU_86d3700a-4c6a-47ea-8630-a4e6b2bc37c2"
      unitRef="usd">-352446000</us-gaap:RetainedEarningsAccumulatedDeficit>
    <us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitAmount
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzEyMDA_a69346d3-ffb1-492c-8831-bb3e88240956"
      unitRef="usd">11036000</us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitAmount>
    <us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitAmount
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzEyMTI_20ef7233-12dc-4ae1-889e-4dcc58a4b50d"
      unitRef="usd">12788000</us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitAmount>
    <us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitAmount
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzEyMjg_c631d868-5fda-401f-bfcf-2ab476e29a08"
      unitRef="usd">6472000</us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitAmount>
    <us-gaap:IncomeTaxReconciliationTaxSettlementsForeign
      contextRef="i9c502ee279f04030a69eee355d54bd16_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzE3NDE_5ed3bb0a-e45b-4b86-8c9b-f79d4344416f"
      unitRef="usd">13984000</us-gaap:IncomeTaxReconciliationTaxSettlementsForeign>
    <us-gaap:IncomeTaxReconciliationTaxSettlementsForeign
      contextRef="i9f2450d3a26446f4b85444fb9284cece_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzIwMTE_8f37a195-4637-4b98-b996-71ad5798609a"
      unitRef="usd">3267000</us-gaap:IncomeTaxReconciliationTaxSettlementsForeign>
    <us-gaap:IncomeTaxReconciliationTaxSettlementsForeign
      contextRef="ia5768b0e810e4157b4eae97d0d1b08c6_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzIwODQ_93518580-4775-4831-af39-d3f8114f809e"
      unitRef="usd">843000</us-gaap:IncomeTaxReconciliationTaxSettlementsForeign>
    <cgnx:DeferredTaxAssetsForeignTaxStructureChange
      contextRef="ia991b13c7b074439964a26d579235ee4_I20191231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzI2OTY_c6a1da24-e293-47b0-b89f-0d49a04bbfae"
      unitRef="usd">437500000</cgnx:DeferredTaxAssetsForeignTaxStructureChange>
    <cgnx:DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome
      contextRef="ia991b13c7b074439964a26d579235ee4_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzMwNzg_56c4cabc-3d1b-4fb8-9d05-be2b4ba8f507"
      unitRef="usd">350000000</cgnx:DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome>
    <us-gaap:IncomeTaxReconciliationForeignIncomeTaxRateDifferential
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzMyNDA_b606a11b-c2c8-46c5-bf29-eaa3ad04d590"
      unitRef="usd">87500000</us-gaap:IncomeTaxReconciliationForeignIncomeTaxRateDifferential>
    <cgnx:EffectiveIncomeTaxRateReconciliationMigrationOfAcquiredIntellectualPropertyDollar
      contextRef="i4452ed78907f4d219ac405351100fab2_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzM2NDg_0884a4cd-842e-40c0-8883-befe41e6f85e"
      unitRef="usd">28528000</cgnx:EffectiveIncomeTaxRateReconciliationMigrationOfAcquiredIntellectualPropertyDollar>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="i4bc97ab3a3094188b15fe79424b28ed5_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzM2ODA_41a19472-2148-4e8f-ac9e-3f53b7369c9e"
      unitRef="usd">3700000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:SummaryOfIncomeTaxContingenciesTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzg1MjU_e73b0503-5cd7-4219-b6f0-038e8c29d740">&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The changes in the reserve for income taxes, excluding gross interest and penalties, were as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:81.158%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:16.642%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance of reserve for income taxes as of December 31, 2019&lt;/span&gt;&lt;/td&gt;&lt;td style="padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;11,591&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross amounts of increases in unrecognized tax benefits as a result of tax positions taken in prior periods&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;162&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross amounts of increases in unrecognized tax benefits as a result of tax positions taken in the current period&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,383&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross amounts of decreases in unrecognized tax benefits as a result of the expiration of the applicable statutes of limitations&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1,184)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance of reserve for income taxes as of December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;13,952&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross amounts of decreases in unrecognized tax benefits as a result of tax positions taken in prior periods&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(280)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross amounts of increases in unrecognized tax benefits as a result of tax positions taken in prior periods&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;100&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross amounts of increases in unrecognized tax benefits as a result of tax positions taken in the current period&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;525&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross amounts of decreases in unrecognized tax benefits as a result of the expiration of the applicable statutes of limitations&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(485)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance of reserve for income taxes as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;13,812&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:SummaryOfIncomeTaxContingenciesTextBlock>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="ia991b13c7b074439964a26d579235ee4_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToyNTEyMzMyZTVhOWM0MDc4YThmOGFiZGFmNTgzYjllNC90YWJsZXJhbmdlOjI1MTIzMzJlNWE5YzQwNzhhOGY4YWJkYWY1ODNiOWU0XzAtMS0xLTEtMjg4MDU_c60f048b-8c46-405c-8226-15bc34bb4ea9"
      unitRef="usd">11591000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToyNTEyMzMyZTVhOWM0MDc4YThmOGFiZGFmNTgzYjllNC90YWJsZXJhbmdlOjI1MTIzMzJlNWE5YzQwNzhhOGY4YWJkYWY1ODNiOWU0XzEtMS0xLTEtMjg4MDU_ad295a2a-b5bc-4813-9349-3529c959666b"
      unitRef="usd">162000</us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions>
    <us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToyNTEyMzMyZTVhOWM0MDc4YThmOGFiZGFmNTgzYjllNC90YWJsZXJhbmdlOjI1MTIzMzJlNWE5YzQwNzhhOGY4YWJkYWY1ODNiOWU0XzItMS0xLTEtMjg4MDU_c155652a-2b26-4edd-bf1f-9c1d704b9588"
      unitRef="usd">3383000</us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions>
    <us-gaap:UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToyNTEyMzMyZTVhOWM0MDc4YThmOGFiZGFmNTgzYjllNC90YWJsZXJhbmdlOjI1MTIzMzJlNWE5YzQwNzhhOGY4YWJkYWY1ODNiOWU0XzQtMS0xLTEtMjg4MDU_9a5cdad6-2ff8-4dce-bf4b-371a40658925"
      unitRef="usd">1184000</us-gaap:UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToyNTEyMzMyZTVhOWM0MDc4YThmOGFiZGFmNTgzYjllNC90YWJsZXJhbmdlOjI1MTIzMzJlNWE5YzQwNzhhOGY4YWJkYWY1ODNiOWU0XzUtMS0xLTEtMjg4MDU_1699d5fb-051d-4efe-9c9f-1c5e521f0488"
      unitRef="usd">13952000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToyNTEyMzMyZTVhOWM0MDc4YThmOGFiZGFmNTgzYjllNC90YWJsZXJhbmdlOjI1MTIzMzJlNWE5YzQwNzhhOGY4YWJkYWY1ODNiOWU0XzYtMS0xLTEtMjg4MDU_ed9dcac1-b310-421c-a5c8-0bdb1bd65327"
      unitRef="usd">280000</us-gaap:UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions>
    <us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToyNTEyMzMyZTVhOWM0MDc4YThmOGFiZGFmNTgzYjllNC90YWJsZXJhbmdlOjI1MTIzMzJlNWE5YzQwNzhhOGY4YWJkYWY1ODNiOWU0XzctMS0xLTEtMzk2ODU_278e88fd-443d-48f7-b81d-a6ce4c372e78"
      unitRef="usd">100000</us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions>
    <us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToyNTEyMzMyZTVhOWM0MDc4YThmOGFiZGFmNTgzYjllNC90YWJsZXJhbmdlOjI1MTIzMzJlNWE5YzQwNzhhOGY4YWJkYWY1ODNiOWU0XzctMS0xLTEtMjg4MDU_019bf6d2-64a9-4e6e-94b2-f095417d5983"
      unitRef="usd">525000</us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions>
    <us-gaap:UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToyNTEyMzMyZTVhOWM0MDc4YThmOGFiZGFmNTgzYjllNC90YWJsZXJhbmdlOjI1MTIzMzJlNWE5YzQwNzhhOGY4YWJkYWY1ODNiOWU0XzktMS0xLTEtMjg4MDU_6af22703-6eff-4175-ad5c-6e9bbd3ef315"
      unitRef="usd">485000</us-gaap:UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToyNTEyMzMyZTVhOWM0MDc4YThmOGFiZGFmNTgzYjllNC90YWJsZXJhbmdlOjI1MTIzMzJlNWE5YzQwNzhhOGY4YWJkYWY1ODNiOWU0XzEwLTEtMS0xLTI4ODA1_f949fee0-9de6-4fbd-846b-d77b67907743"
      unitRef="usd">13812000</us-gaap:UnrecognizedTaxBenefits>
    <cgnx:UnrecognizedTaxBenefitsGross
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzQ2MjU_d1b8229e-77c3-4c80-946d-962a49a79952"
      unitRef="usd">15808000</cgnx:UnrecognizedTaxBenefitsGross>
    <us-gaap:LiabilityForUncertainTaxPositionsNoncurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzQ2Njg_bf1f3fbe-fa69-4632-a293-014a768913fa"
      unitRef="usd">14780000</us-gaap:LiabilityForUncertainTaxPositionsNoncurrent>
    <cgnx:Unrecognizedtaxbenefitshownasareductiontononcurrentdeferredtaxassets
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzQ3MTM_6e1a8197-8519-4c11-857d-c2629787d097"
      unitRef="usd">1028000</cgnx:Unrecognizedtaxbenefitshownasareductiontononcurrentdeferredtaxassets>
    <cgnx:UnrecognizedTaxBenefitsGross
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzQ4NjA_56f1f861-710a-41d0-b682-88060cf38d71"
      unitRef="usd">15285000</cgnx:UnrecognizedTaxBenefitsGross>
    <us-gaap:LiabilityForUncertainTaxPositionsNoncurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzQ5MDM_82b0c23e-e6a6-4793-9aa1-6906a09d8e69"
      unitRef="usd">14257000</us-gaap:LiabilityForUncertainTaxPositionsNoncurrent>
    <cgnx:Unrecognizedtaxbenefitshownasareductiontononcurrentdeferredtaxassets
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzQ5NDg_bcd3d9b4-8c51-43a8-9c4b-96f3e419eceb"
      unitRef="usd">1028000</cgnx:Unrecognizedtaxbenefitshownasareductiontononcurrentdeferredtaxassets>
    <us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzUwODU_908fb27e-0d1d-4212-95e5-469b5bfd7135"
      unitRef="usd">1996000</us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued>
    <us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzUwOTI_91cd4586-8452-4f11-9b85-ea67ece8892f"
      unitRef="usd">1332000</us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued>
    <cgnx:MinimumDecreaseInIncomeTaxExpenseDueToReleaseInReserves
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzU1NjA_739d8672-38b4-4599-bc73-1c717105e66e"
      unitRef="usd">2000000</cgnx:MinimumDecreaseInIncomeTaxExpenseDueToReleaseInReserves>
    <cgnx:MaximumDecreaseInIncomeTaxExpenseDueToReleaseInReserves
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzU1NjY_890e388b-376e-4be6-a126-ade9ccfc6f3d"
      unitRef="usd">3500000</cgnx:MaximumDecreaseInIncomeTaxExpenseDueToReleaseInReserves>
    <us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
      contextRef="iffc7295ab67445f8bd6fc5841d17366c_D20210101-20211231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzU3NjM_fe237968-3269-4a7e-8063-92ef6ce812c2"
      unitRef="number">0.125</us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate>
    <us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
      contextRef="i6a2c8b01c55f45a383585d973a17734e_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzU3ODE_427a0bbc-d352-404b-b290-7bf867ba023d"
      unitRef="number">0.25</us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate>
    <us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
      contextRef="ia7b70df5ca144c19aa32c0b1861d055c_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzEwOTk1MTE2MzY4NzM_e79126be-173b-4748-a30e-05dc15a4eedd"
      unitRef="number">0.22</us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate>
    <us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
      contextRef="i0c3c1c01066849da8660af393f5f2d8c_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzU4NTU_4b78f6d6-fffd-43e3-9c9d-32b08f5f6d97"
      unitRef="number">0.21</us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate>
    <us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzU5Mzc_c4e27146-7e1a-4eed-bcd8-39a6410ddd11"
      unitRef="number">-0.05</us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential>
    <us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzU5NzE_67b20751-d9ab-45fb-bec5-0f7b83006a4a"
      unitRef="number">-0.06</us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential>
    <us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzEwOTk1MTE2MzY5NTY_4a7ed864-2293-4747-a989-a0387d5e45b0"
      unitRef="number">-0.09</us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential>
    <us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestExpense
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzY4OTY_1a9b6951-233c-4aed-9b58-5b394bb01b51"
      unitRef="usd">281000</us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestExpense>
    <us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestExpense
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzY5MDA_a04ff342-6a24-4230-a923-b7282ddf0732"
      unitRef="usd">340000</us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestExpense>
    <us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestExpense
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzY5MDg_ddad0de7-7ac9-4bbb-9b63-7b8f432fbc63"
      unitRef="usd">116000</us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestExpense>
    <us-gaap:IncomeTaxesPaidNet
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzY5ODU_23bc8c94-c00f-497d-af4a-4af9921feda9"
      unitRef="usd">49435000</us-gaap:IncomeTaxesPaidNet>
    <us-gaap:IncomeTaxesPaidNet
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzY5OTU_2185f2ed-1a79-46ed-968a-a1169ebb5d9d"
      unitRef="usd">33695000</us-gaap:IncomeTaxesPaidNet>
    <us-gaap:IncomeTaxesPaidNet
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzcwMDk_cca28c92-e46b-4290-8bc6-7ff547bbee83"
      unitRef="usd">13443000</us-gaap:IncomeTaxesPaidNet>
    <us-gaap:ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzg1MzA_8224b3d3-71f6-45c7-95d0-a08e9d507856">&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Deferred tax assets and liabilities, presented on a gross basis by jurisdiction, consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:66.495%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.735%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.737%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December&#160;31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross deferred tax assets:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Intangible asset in connection with change in tax structure&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;404,526&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;424,156&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Stock-based compensation expense&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;15,279&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;13,294&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Federal and state tax credit carryforwards&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;11,051&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;10,171&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Inventory and revenue related&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;7,426&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,976&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Bonuses, commissions, and other compensation&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;7,263&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,932&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Depreciation&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;5,395&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,211&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign net operating losses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;751&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;602&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Other&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;9,023&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,342&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross deferred tax assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;460,714&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;467,684&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Valuation allowance&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(8,188)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(8,568)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;452,526&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;459,116&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr style="height:14pt"&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross deferred tax liabilities:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;GILTI tax basis differences in connection with change in tax structure&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(327,725)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(339,364)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr style="height:14pt"&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Net deferred taxes&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;124,801&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;119,752&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock>
    <cgnx:DeferredTaxAssetsIntangibleAssetChangeinTaxStructure
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzMtMS0xLTEtMjg4MDU_7f3f1a47-3ba1-44a1-91b4-947951160202"
      unitRef="usd">404526000</cgnx:DeferredTaxAssetsIntangibleAssetChangeinTaxStructure>
    <cgnx:DeferredTaxAssetsIntangibleAssetChangeinTaxStructure
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzMtMy0xLTEtMjg4MDU_73aec3d6-b4a7-4989-bd93-6e16f6db742f"
      unitRef="usd">424156000</cgnx:DeferredTaxAssetsIntangibleAssetChangeinTaxStructure>
    <us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzQtMS0xLTEtMjg4MDU_af9b5b53-1740-4604-b79a-e6cbab2d6d0d"
      unitRef="usd">15279000</us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost>
    <us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzQtMy0xLTEtMjg4MDU_d29489a1-8203-4557-a896-0ae1752a9b84"
      unitRef="usd">13294000</us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost>
    <us-gaap:DeferredTaxAssetsOperatingLossCarryforwardsDomestic
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzUtMS0xLTEtMjg4MDU_01612576-ade2-4b63-9323-c142b0564e2e"
      unitRef="usd">11051000</us-gaap:DeferredTaxAssetsOperatingLossCarryforwardsDomestic>
    <us-gaap:DeferredTaxAssetsOperatingLossCarryforwardsDomestic
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzUtMy0xLTEtMjg4MDU_3187120d-01d2-42b9-ae45-16c24a1b5600"
      unitRef="usd">10171000</us-gaap:DeferredTaxAssetsOperatingLossCarryforwardsDomestic>
    <us-gaap:DeferredTaxAssetsInventory
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzYtMS0xLTEtMjg4MDU_1ff2b573-7ac2-41d8-b9e9-a24e8bab8ec7"
      unitRef="usd">7426000</us-gaap:DeferredTaxAssetsInventory>
    <us-gaap:DeferredTaxAssetsInventory
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzYtMy0xLTEtMjg4MDU_346b6d5e-79a6-483c-b40e-40d57cf8de00"
      unitRef="usd">5976000</us-gaap:DeferredTaxAssetsInventory>
    <us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsOther
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzctMS0xLTEtMjg4MDU_41a8c042-f59b-47e6-b49d-c184d7a8c734"
      unitRef="usd">7263000</us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsOther>
    <us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsOther
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzctMy0xLTEtMjg4MDU_1c6901cb-33d5-4e54-902c-9fba7964b4d1"
      unitRef="usd">4932000</us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsOther>
    <cgnx:NoncurrentDeferredTaxAssetsDeprecation
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzgtMS0xLTEtMjg4MDU_5ee575a3-9b97-4b21-9098-71d40af37d0f"
      unitRef="usd">5395000</cgnx:NoncurrentDeferredTaxAssetsDeprecation>
    <cgnx:NoncurrentDeferredTaxAssetsDeprecation
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzgtMy0xLTEtMjg4MDU_39e132c2-581b-4224-b313-b8a7e91f1502"
      unitRef="usd">4211000</cgnx:NoncurrentDeferredTaxAssetsDeprecation>
    <us-gaap:DeferredTaxAssetsOperatingLossCarryforwardsForeign
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzktMS0xLTEtMjg4MDU_4d1d6b7a-7350-482c-8b2f-4ceffc5fce8c"
      unitRef="usd">751000</us-gaap:DeferredTaxAssetsOperatingLossCarryforwardsForeign>
    <us-gaap:DeferredTaxAssetsOperatingLossCarryforwardsForeign
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzktMy0xLTEtMjg4MDU_6725ff1d-c5e9-4be8-b0e6-8d3f54ca6006"
      unitRef="usd">602000</us-gaap:DeferredTaxAssetsOperatingLossCarryforwardsForeign>
    <cgnx:DeferredTaxAssetsOtherNoncurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzEwLTEtMS0xLTI4ODA1_803158de-9c24-499b-b303-0565bf1f2d62"
      unitRef="usd">9023000</cgnx:DeferredTaxAssetsOtherNoncurrent>
    <cgnx:DeferredTaxAssetsOtherNoncurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzEwLTMtMS0xLTI4ODA1_5de66853-a49e-442e-97cf-5cb58ca070eb"
      unitRef="usd">4342000</cgnx:DeferredTaxAssetsOtherNoncurrent>
    <cgnx:DeferredTaxAssetsWithJurisdictionalNettingGross
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzExLTEtMS0xLTI4ODA1_62df57c6-520b-467f-a435-59123145acec"
      unitRef="usd">460714000</cgnx:DeferredTaxAssetsWithJurisdictionalNettingGross>
    <cgnx:DeferredTaxAssetsWithJurisdictionalNettingGross
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzExLTMtMS0xLTI4ODA1_72629142-5b2e-4402-8377-e8beb6ab0447"
      unitRef="usd">467684000</cgnx:DeferredTaxAssetsWithJurisdictionalNettingGross>
    <us-gaap:DeferredTaxAssetsValuationAllowance
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzEyLTEtMS0xLTI4ODA1_91e00f2b-c257-45b7-9491-ed7140b18840"
      unitRef="usd">8188000</us-gaap:DeferredTaxAssetsValuationAllowance>
    <us-gaap:DeferredTaxAssetsValuationAllowance
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzEyLTMtMS0xLTI4ODA1_393784c5-51a1-4873-9c82-54e9b9e9a641"
      unitRef="usd">8568000</us-gaap:DeferredTaxAssetsValuationAllowance>
    <us-gaap:DeferredTaxAssetsLiabilitiesNet
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzEzLTEtMS0xLTI4ODA1_a1522544-ace5-45f8-8b6c-589aed0aa113"
      unitRef="usd">452526000</us-gaap:DeferredTaxAssetsLiabilitiesNet>
    <us-gaap:DeferredTaxAssetsLiabilitiesNet
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzEzLTMtMS0xLTI4ODA1_7fcf8fb5-f1d2-4f4a-8e8a-1b77c632c604"
      unitRef="usd">459116000</us-gaap:DeferredTaxAssetsLiabilitiesNet>
    <cgnx:DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzE2LTEtMS0xLTI4ODA1_246cf6c0-6255-42ef-938a-c546de1f7be2"
      unitRef="usd">327725000</cgnx:DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome>
    <cgnx:DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzE2LTMtMS0xLTI4ODA1_984bc615-23e8-4d54-8aaf-f3849eb37458"
      unitRef="usd">339364000</cgnx:DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome>
    <cgnx:DeferredIncomeTaxAssetsLiabilitiesNet
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzIyLTEtMS0xLTM5NzA2_33e3df49-b980-4c7f-ab14-67a02f114c86"
      unitRef="usd">124801000</cgnx:DeferredIncomeTaxAssetsLiabilitiesNet>
    <cgnx:DeferredIncomeTaxAssetsLiabilitiesNet
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzIyLTMtMS0xLTQxNjU4_b03e8b80-0830-499f-b6b1-134e350a969e"
      unitRef="usd">119752000</cgnx:DeferredIncomeTaxAssetsLiabilitiesNet>
    <us-gaap:DeferredTaxAssetsTaxCreditCarryforwardsForeign
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzE2NDkyNjc0NTgxMjU_25f9350c-39e2-4cad-9374-3362ee314132"
      unitRef="usd">1730000</us-gaap:DeferredTaxAssetsTaxCreditCarryforwardsForeign>
    <us-gaap:DeferredTaxAssetsValuationAllowance
      contextRef="id624ea8a42db4ca6a9c8968c5c834a62_I20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzcyOTY_f39dfcce-cbe7-4a52-85e8-edd3be361784"
      unitRef="usd">11750000</us-gaap:DeferredTaxAssetsValuationAllowance>
    <us-gaap:DeferredTaxAssetsTaxCreditCarryforwardsResearch
      contextRef="i2d7f829283d84ef790a2db8c1f7a3fcc_I20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzc2NzA_3c3c183e-facf-46c4-8ba8-2f690c6174bb"
      unitRef="usd">13250000</us-gaap:DeferredTaxAssetsTaxCreditCarryforwardsResearch>
    <us-gaap:EarningsPerShareTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzgvZnJhZzpkYzkwODNkOWFkMjU0NjY5ODVlMTBmOGViYjVjMWU0Ny90ZXh0cmVnaW9uOmRjOTA4M2Q5YWQyNTQ2Njk4NWUxMGY4ZWJiNWMxZTQ3XzcxMQ_e0584c1d-0dcc-4696-9971-76b1e5ca59fb">Weighted Average Shares&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Weighted-average shares were calculated as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:55.058%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.976%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.976%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.124%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="15" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Year Ended December&#160;31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2019&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Basic weighted-average common shares outstanding&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;176,463&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;173,489&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;171,194&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Effect of dilutive stock awards&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;3,453&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,103&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,075&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Diluted weighted-average common and common-equivalent shares outstanding&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;179,916&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;176,592&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;175,269&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Stock options to purchase 497,504, 4,371,194, and 5,735,608 shares of common stock, on a weighted-average basis, were outstanding in 2021, 2020, and 2019, respectively, but were not included in the calculation of dilutive net income per share because they were anti-dilutive. Restricted stock units totaling 605, 3,826, and 13,092 shares of common stock, on a weighted-average basis, were outstanding in 2021, 2020, and 2019, respectively, but were not included in the calculation of dilutive net income per share because they were anti-dilutive.&lt;/span&gt;&lt;/div&gt;</us-gaap:EarningsPerShareTextBlock>
    <us-gaap:ScheduleOfWeightedAverageNumberOfSharesTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzgvZnJhZzpkYzkwODNkOWFkMjU0NjY5ODVlMTBmOGViYjVjMWU0Ny90ZXh0cmVnaW9uOmRjOTA4M2Q5YWQyNTQ2Njk4NWUxMGY4ZWJiNWMxZTQ3XzcwNA_5d3c376d-9a1f-47d1-832b-e97a5d70eda2">&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Weighted-average shares were calculated as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:55.058%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.976%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.976%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.124%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="15" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Year Ended December&#160;31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2019&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Basic weighted-average common shares outstanding&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;176,463&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;173,489&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;171,194&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Effect of dilutive stock awards&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;3,453&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,103&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,075&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Diluted weighted-average common and common-equivalent shares outstanding&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;179,916&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;176,592&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;175,269&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfWeightedAverageNumberOfSharesTableTextBlock>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzgvZnJhZzpkYzkwODNkOWFkMjU0NjY5ODVlMTBmOGViYjVjMWU0Ny90YWJsZTo5YzBlZjc1OTk4Nzg0ZDE3ODFjZjliNTM4MTI5NDYwZC90YWJsZXJhbmdlOjljMGVmNzU5OTg3ODRkMTc4MWNmOWI1MzgxMjk0NjBkXzItMS0xLTEtMjg4MDU_08af47b9-1ce7-4382-aa1e-a6e52d26d292"
      unitRef="shares">176463000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzgvZnJhZzpkYzkwODNkOWFkMjU0NjY5ODVlMTBmOGViYjVjMWU0Ny90YWJsZTo5YzBlZjc1OTk4Nzg0ZDE3ODFjZjliNTM4MTI5NDYwZC90YWJsZXJhbmdlOjljMGVmNzU5OTg3ODRkMTc4MWNmOWI1MzgxMjk0NjBkXzItMy0xLTEtMjg4MDU_4dea4dec-8555-428e-96d5-4697595d57a3"
      unitRef="shares">173489000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzgvZnJhZzpkYzkwODNkOWFkMjU0NjY5ODVlMTBmOGViYjVjMWU0Ny90YWJsZTo5YzBlZjc1OTk4Nzg0ZDE3ODFjZjliNTM4MTI5NDYwZC90YWJsZXJhbmdlOjljMGVmNzU5OTg3ODRkMTc4MWNmOWI1MzgxMjk0NjBkXzItNS0xLTEtMjg4MDU_d03dedbb-50e9-4e02-b756-9685c76716b5"
      unitRef="shares">171194000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzgvZnJhZzpkYzkwODNkOWFkMjU0NjY5ODVlMTBmOGViYjVjMWU0Ny90YWJsZTo5YzBlZjc1OTk4Nzg0ZDE3ODFjZjliNTM4MTI5NDYwZC90YWJsZXJhbmdlOjljMGVmNzU5OTg3ODRkMTc4MWNmOWI1MzgxMjk0NjBkXzMtMS0xLTEtMjg4MDU_6296d338-3d5d-421f-acc4-a9b88fbdb834"
      unitRef="shares">3453000</us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment>
    <us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzgvZnJhZzpkYzkwODNkOWFkMjU0NjY5ODVlMTBmOGViYjVjMWU0Ny90YWJsZTo5YzBlZjc1OTk4Nzg0ZDE3ODFjZjliNTM4MTI5NDYwZC90YWJsZXJhbmdlOjljMGVmNzU5OTg3ODRkMTc4MWNmOWI1MzgxMjk0NjBkXzMtMy0xLTEtMjg4MDU_f441f917-c1e2-4a86-a4b6-cc3622d27bca"
      unitRef="shares">3103000</us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment>
    <us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzgvZnJhZzpkYzkwODNkOWFkMjU0NjY5ODVlMTBmOGViYjVjMWU0Ny90YWJsZTo5YzBlZjc1OTk4Nzg0ZDE3ODFjZjliNTM4MTI5NDYwZC90YWJsZXJhbmdlOjljMGVmNzU5OTg3ODRkMTc4MWNmOWI1MzgxMjk0NjBkXzMtNS0xLTEtMjg4MDU_6608bef6-1275-4447-8366-691f054b5097"
      unitRef="shares">4075000</us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzgvZnJhZzpkYzkwODNkOWFkMjU0NjY5ODVlMTBmOGViYjVjMWU0Ny90YWJsZTo5YzBlZjc1OTk4Nzg0ZDE3ODFjZjliNTM4MTI5NDYwZC90YWJsZXJhbmdlOjljMGVmNzU5OTg3ODRkMTc4MWNmOWI1MzgxMjk0NjBkXzQtMS0xLTEtMjg4MDU_ded06639-23bc-4e05-8e7c-5066d06f6f2d"
      unitRef="shares">179916000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzgvZnJhZzpkYzkwODNkOWFkMjU0NjY5ODVlMTBmOGViYjVjMWU0Ny90YWJsZTo5YzBlZjc1OTk4Nzg0ZDE3ODFjZjliNTM4MTI5NDYwZC90YWJsZXJhbmdlOjljMGVmNzU5OTg3ODRkMTc4MWNmOWI1MzgxMjk0NjBkXzQtMy0xLTEtMjg4MDU_873852bc-272c-4004-a288-94ca53bd7870"
      unitRef="shares">176592000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzgvZnJhZzpkYzkwODNkOWFkMjU0NjY5ODVlMTBmOGViYjVjMWU0Ny90YWJsZTo5YzBlZjc1OTk4Nzg0ZDE3ODFjZjliNTM4MTI5NDYwZC90YWJsZXJhbmdlOjljMGVmNzU5OTg3ODRkMTc4MWNmOWI1MzgxMjk0NjBkXzQtNS0xLTEtMjg4MDU_088cf7d0-c5dc-4e28-bf7b-e4f1251a5d05"
      unitRef="shares">175269000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
      contextRef="i7c9f8c01dcbb4324b28ecd41ace87fd9_D20210101-20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzgvZnJhZzpkYzkwODNkOWFkMjU0NjY5ODVlMTBmOGViYjVjMWU0Ny90ZXh0cmVnaW9uOmRjOTA4M2Q5YWQyNTQ2Njk4NWUxMGY4ZWJiNWMxZTQ3XzEzMw_bd135b3f-738e-4b2e-ae8d-0893e81cbaff"
      unitRef="shares">497504</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
    <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
      contextRef="i8bd1c6a0aebf4c03923831a10dbbf2a6_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzgvZnJhZzpkYzkwODNkOWFkMjU0NjY5ODVlMTBmOGViYjVjMWU0Ny90ZXh0cmVnaW9uOmRjOTA4M2Q5YWQyNTQ2Njk4NWUxMGY4ZWJiNWMxZTQ3XzEzNw_a2029492-df70-4fff-b359-1911ec0c6064"
      unitRef="shares">4371194</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
    <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
      contextRef="i197680ce6f4a47b08921cc9e95e40369_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzgvZnJhZzpkYzkwODNkOWFkMjU0NjY5ODVlMTBmOGViYjVjMWU0Ny90ZXh0cmVnaW9uOmRjOTA4M2Q5YWQyNTQ2Njk4NWUxMGY4ZWJiNWMxZTQ3XzE0NQ_c0afaa15-402d-4929-ae65-fe96fe69dc5e"
      unitRef="shares">5735608</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
    <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
      contextRef="ic686f763cf704bc2867ccfd9c33dc6c7_D20210101-20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzgvZnJhZzpkYzkwODNkOWFkMjU0NjY5ODVlMTBmOGViYjVjMWU0Ny90ZXh0cmVnaW9uOmRjOTA4M2Q5YWQyNTQ2Njk4NWUxMGY4ZWJiNWMxZTQ3XzEwOTk1MTE2Mjg1MzM_e9d9631d-88af-406e-9335-e3aaa10b63d5"
      unitRef="shares">605</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
    <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
      contextRef="i35cd9fec0a4c4a84826235af293727b2_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzgvZnJhZzpkYzkwODNkOWFkMjU0NjY5ODVlMTBmOGViYjVjMWU0Ny90ZXh0cmVnaW9uOmRjOTA4M2Q5YWQyNTQ2Njk4NWUxMGY4ZWJiNWMxZTQ3XzM5MA_a5430abd-d420-40f2-88b4-23b696f36bd3"
      unitRef="shares">3826</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
    <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
      contextRef="ica46cebde58f4747ba082879193d850e_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzgvZnJhZzpkYzkwODNkOWFkMjU0NjY5ODVlMTBmOGViYjVjMWU0Ny90ZXh0cmVnaW9uOmRjOTA4M2Q5YWQyNTQ2Njk4NWUxMGY4ZWJiNWMxZTQ3XzM5Nw_7acc35d9-4ec3-4006-9d02-685e6e548f69"
      unitRef="shares">13092</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
    <us-gaap:SegmentReportingDisclosureTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90ZXh0cmVnaW9uOjMzMmEzMzJlODhiZjQ2OGM5MTYxYjQ2YTAwNWM2Yzg5XzExODc_3e523a4c-132d-4526-af48-7aac20dd32f0">Segment and Geographic Information&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company operates in one segment, machine vision technology. The Company&#x2019;s chief operating decision maker is the chief executive officer, who makes decisions to allocate resources and assesses performance at the corporate level. The Company offers a variety of machine vision products that have similar economic characteristics, have the same production processes, and are distributed by the same sales channels to the same types of customers.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes information about geographic areas (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:28.665%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.389%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.389%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.243%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.389%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.393%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;United&#160;States&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Europe&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Greater China &lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Other&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Total&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Year Ended December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Revenue&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;393,690&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;247,744&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;200,135&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;195,529&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;1,037,098&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Long-lived assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;63,141&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;16,982&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;960&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;3,705&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;84,788&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Year Ended December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Revenue&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;280,205&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;208,787&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;168,287&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;153,741&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;811,020&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Long-lived assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;60,911&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;20,014&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,278&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,764&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;86,967&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Year Ended December 31, 2019&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Revenue&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;247,689&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;227,738&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;115,061&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;135,137&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;725,625&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Long-lived assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;68,496&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;21,691&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,487&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,602&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;95,276&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Revenue is presented geographically based on the customer&#x2019;s country of domicile. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:4pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Revenue from a single customer accounted for 17% and 14% of total revenue in 2021 and 2020, respectively. Revenue from this customer was not greater than 10% of total revenue in 2019. Accounts receivable from this same customer accounted for 15% and 19% of total accounts receivable as of December 31, 2021 and 2020, respectively.&lt;/span&gt;&lt;/div&gt;Revenue from a second customer accounted for 13% of total revenue in 2020. Revenue from this customer was not greater than 10% of total revenue in 2021 or 2019. Accounts receivable from this same customer accounted for 11% and 20% of total accounts receivable as of December 31, 2021 and 2020, respectively.</us-gaap:SegmentReportingDisclosureTextBlock>
    <us-gaap:NumberOfReportableSegments
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90ZXh0cmVnaW9uOjMzMmEzMzJlODhiZjQ2OGM5MTYxYjQ2YTAwNWM2Yzg5Xzcz_a1834e9b-4ac2-4093-96f2-072e8a6ca64f"
      unitRef="segment">1</us-gaap:NumberOfReportableSegments>
    <us-gaap:ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsByGeographicalAreasTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90ZXh0cmVnaW9uOjMzMmEzMzJlODhiZjQ2OGM5MTYxYjQ2YTAwNWM2Yzg5XzExOTI_df76ff1b-1165-4929-8dff-64d3a58375c5">&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes information about geographic areas (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:28.665%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.389%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.389%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.243%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.389%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.393%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;United&#160;States&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Europe&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Greater China &lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Other&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Total&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Year Ended December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Revenue&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;393,690&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;247,744&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;200,135&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;195,529&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;1,037,098&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Long-lived assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;63,141&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;16,982&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;960&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;3,705&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;84,788&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Year Ended December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Revenue&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;280,205&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;208,787&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;168,287&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;153,741&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;811,020&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Long-lived assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;60,911&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;20,014&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,278&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,764&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;86,967&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Year Ended December 31, 2019&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Revenue&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;247,689&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;227,738&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;115,061&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;135,137&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;725,625&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Long-lived assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;68,496&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;21,691&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,487&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,602&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;95,276&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsByGeographicalAreasTableTextBlock>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ia69b052cbadd44c094541da53ba42a51_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzItMS0xLTEtMjg4MDU_da7ef867-bcbc-4aab-b1ab-2ecfb9269bb2"
      unitRef="usd">393690000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="icdd53699b9af4b4388009f695891ea3f_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzItMy0xLTEtMjg4MDU_6ff88039-958b-40cc-9a2d-4b3697449ab7"
      unitRef="usd">247744000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i3dc436c98f1d4e0792723c1df4fcf255_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzItNS0xLTEtMjg4MDU_d8c8af01-a6bb-4a80-9ac6-9e8c4d6400fe"
      unitRef="usd">200135000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ic575a52a81ce437ca78b900c07321681_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzItNy0xLTEtMjg4MDU_02bcff06-af7e-41b5-811e-92516f593cf2"
      unitRef="usd">195529000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzItOS0xLTEtMjg4MDU_cb4b26ea-2895-4d4a-b0c6-e734a4e3da00"
      unitRef="usd">1037098000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:NoncurrentAssets
      contextRef="idcbb00e30a054c9b8dc545052284d730_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzMtMS0xLTEtMjg4MDU_9bd70e65-8a4b-4b97-b107-85ba019b9de5"
      unitRef="usd">63141000</us-gaap:NoncurrentAssets>
    <us-gaap:NoncurrentAssets
      contextRef="ib4cda65b83b74a7dbc080d8fedc4d2d9_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzMtMy0xLTEtMjg4MDU_86554e87-ad60-4558-b8cd-fe335ea39b8b"
      unitRef="usd">16982000</us-gaap:NoncurrentAssets>
    <us-gaap:NoncurrentAssets
      contextRef="ib4944b90959b4b208c0bdfb2c87ee10e_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzMtNS0xLTEtMjg4MDU_6313ae38-0c78-4e97-91dd-c01266212ca2"
      unitRef="usd">960000</us-gaap:NoncurrentAssets>
    <us-gaap:NoncurrentAssets
      contextRef="ic40beac310a64112b7eb01f6089573c1_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzMtNy0xLTEtMjg4MDU_0d7429e9-c016-4ee4-9185-19a127baf977"
      unitRef="usd">3705000</us-gaap:NoncurrentAssets>
    <us-gaap:NoncurrentAssets
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzMtOS0xLTEtMjg4MDU_85125cc8-a495-4e4b-a845-1086cca63759"
      unitRef="usd">84788000</us-gaap:NoncurrentAssets>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="id5d24b55c6524d6790756827a7d2e825_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzUtMS0xLTEtMjg4MDU_4b119ac3-d757-4492-8da8-23437be94a3b"
      unitRef="usd">280205000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ib6352ba54d8946149998f1a1bbe233e0_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzUtMy0xLTEtMjg4MDU_3bfbcf66-327c-4537-948f-7f05e4f9369f"
      unitRef="usd">208787000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ie0c6ac0bfff04b6a9c0d23f2260b4c7f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzUtNS0xLTEtMjg4MDU_2c497f8b-eb4c-4fe0-b761-62744957ac12"
      unitRef="usd">168287000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ibf814c6bf04c4e9f9549f0a609b74a55_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzUtNy0xLTEtMjg4MDU_e39904f7-3037-4043-88ab-dbad16bdd5a2"
      unitRef="usd">153741000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzUtOS0xLTEtMjg4MDU_1bc88923-1afb-40d4-8270-54e654b6cb90"
      unitRef="usd">811020000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:NoncurrentAssets
      contextRef="iaa126896ec044da89c6508ff396378a1_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzYtMS0xLTEtMjg4MDU_8374e9c1-8846-4f87-943c-658aedb3c5ab"
      unitRef="usd">60911000</us-gaap:NoncurrentAssets>
    <us-gaap:NoncurrentAssets
      contextRef="ibf2b1fc85cfa4174b619517220508ae0_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzYtMy0xLTEtMjg4MDU_3904e8bc-9b3f-4aa7-937e-ccfce0cef826"
      unitRef="usd">20014000</us-gaap:NoncurrentAssets>
    <us-gaap:NoncurrentAssets
      contextRef="i3c5581736dbd4ad78c3d6e655e93c4ea_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzYtNS0xLTEtMjg4MDU_0c6ab6c5-1cc9-42a6-9959-c344810a7ed4"
      unitRef="usd">1278000</us-gaap:NoncurrentAssets>
    <us-gaap:NoncurrentAssets
      contextRef="ife8b2f31ce1a4b4faa1a745448f716d4_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzYtNy0xLTEtMjg4MDU_7555d633-d136-4c48-a6b2-a028df08ea4e"
      unitRef="usd">4764000</us-gaap:NoncurrentAssets>
    <us-gaap:NoncurrentAssets
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzYtOS0xLTEtMjg4MDU_f66a2abc-c697-47cd-b7eb-8a9bf008f4c2"
      unitRef="usd">86967000</us-gaap:NoncurrentAssets>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i14b5eafbd9ff4be7b9cc2e0919d2dbc7_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzgtMS0xLTEtMjg4MDU_f0140f10-254e-48e7-9ebc-ec5484678d7b"
      unitRef="usd">247689000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ib7c3d649737648878f8b4fc1a2876f26_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzgtMy0xLTEtMjg4MDU_e593257e-3f76-4416-9004-5e120bed8474"
      unitRef="usd">227738000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i717eab74d0194494b7a2294ffc0e7273_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzgtNS0xLTEtMjg4MDU_20d8a720-39df-40a4-86a1-fd9e6477e08f"
      unitRef="usd">115061000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i4921f86f652d4f2e94c4bf9eb25c62e9_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzgtNy0xLTEtMjg4MDU_2dfbe906-aea1-4b28-a83e-46d61bf81b46"
      unitRef="usd">135137000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzgtOS0xLTEtMjg4MDU_af4ab4dc-e9c2-4c4f-9891-d7db6cc28fa5"
      unitRef="usd">725625000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:NoncurrentAssets
      contextRef="i6413254449a541988fcda017a15d0532_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzktMS0xLTEtMjg4MDU_77af6107-6286-4af3-8798-88e8be2551ad"
      unitRef="usd">68496000</us-gaap:NoncurrentAssets>
    <us-gaap:NoncurrentAssets
      contextRef="ieee8eed26dbb44f6aae613473b0dd2ef_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzktMy0xLTEtMjg4MDU_2f4a3cd4-d298-4ae9-a8e7-5e07fd12c1f8"
      unitRef="usd">21691000</us-gaap:NoncurrentAssets>
    <us-gaap:NoncurrentAssets
      contextRef="ic693d5b307414a6c964e0ec425adb970_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzktNS0xLTEtMjg4MDU_30f31139-1094-4ef0-b7f5-dbf9b664d0ee"
      unitRef="usd">1487000</us-gaap:NoncurrentAssets>
    <us-gaap:NoncurrentAssets
      contextRef="ic325874dd99f48839c0a0457e159b140_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzktNy0xLTEtMjg4MDU_d28510e3-c745-46b6-9235-9572f0935fc6"
      unitRef="usd">3602000</us-gaap:NoncurrentAssets>
    <us-gaap:NoncurrentAssets
      contextRef="ia991b13c7b074439964a26d579235ee4_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzktOS0xLTEtMjg4MDU_3dbdd8d9-a4ec-48fc-855f-0862178dd7f4"
      unitRef="usd">95276000</us-gaap:NoncurrentAssets>
    <us-gaap:ConcentrationRiskPercentage1
      contextRef="if4d3420bee2e4188a13523c87c8f50bf_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90ZXh0cmVnaW9uOjMzMmEzMzJlODhiZjQ2OGM5MTYxYjQ2YTAwNWM2Yzg5XzEwOTk1MTE2Mjk5ODE_7c0b4498-10f0-4c39-a856-0bef04b89fb6"
      unitRef="number">0.17</us-gaap:ConcentrationRiskPercentage1>
    <us-gaap:ConcentrationRiskPercentage1
      contextRef="i7f7dc7e149214e86b41eb5b243af420c_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90ZXh0cmVnaW9uOjMzMmEzMzJlODhiZjQ2OGM5MTYxYjQ2YTAwNWM2Yzg5XzEwOTk1MTE2Mjk5ODY_eaf33093-b293-4d26-a307-7827fe30e310"
      unitRef="number">0.14</us-gaap:ConcentrationRiskPercentage1>
    <us-gaap:ConcentrationRiskPercentage1
      contextRef="i4b9aad94c75f49d5ae535996bb5e0901_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90ZXh0cmVnaW9uOjMzMmEzMzJlODhiZjQ2OGM5MTYxYjQ2YTAwNWM2Yzg5XzEwOTk1MTE2MzAxOTQ_58e89779-0cb7-4298-a968-cb1328f622e3"
      unitRef="number">0.15</us-gaap:ConcentrationRiskPercentage1>
    <us-gaap:ConcentrationRiskPercentage1
      contextRef="i7c5b8c599c9542b590f4d0e8f2ced040_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90ZXh0cmVnaW9uOjMzMmEzMzJlODhiZjQ2OGM5MTYxYjQ2YTAwNWM2Yzg5XzExMjE_8a68e9e5-0396-4ad6-ac04-05e6ddbe273c"
      unitRef="number">0.19</us-gaap:ConcentrationRiskPercentage1>
    <us-gaap:ConcentrationRiskPercentage1
      contextRef="i64c87fe8f4fd462c8a6abc5bb13ea76c_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90ZXh0cmVnaW9uOjMzMmEzMzJlODhiZjQ2OGM5MTYxYjQ2YTAwNWM2Yzg5XzEwOTk1MTE2MzA5MDI_c1e9b0de-9697-44d2-9ed1-7b8c8b52af96"
      unitRef="number">0.13</us-gaap:ConcentrationRiskPercentage1>
    <us-gaap:ConcentrationRiskPercentage1
      contextRef="iaf6c363e3eef41d1b00219abbd835f2d_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90ZXh0cmVnaW9uOjMzMmEzMzJlODhiZjQ2OGM5MTYxYjQ2YTAwNWM2Yzg5XzEwOTk1MTE2MzA5MDc_94dab11b-7f35-4606-8e1e-63288ac470fb"
      unitRef="number">0.11</us-gaap:ConcentrationRiskPercentage1>
    <us-gaap:ConcentrationRiskPercentage1
      contextRef="i93b04104f7b44c7996743be1d0745981_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90ZXh0cmVnaW9uOjMzMmEzMzJlODhiZjQ2OGM5MTYxYjQ2YTAwNWM2Yzg5XzEwOTk1MTE2MzA5MTI_beb44829-ba5e-4967-8b7e-e8ed9789391b"
      unitRef="number">0.20</us-gaap:ConcentrationRiskPercentage1>
    <us-gaap:BusinessCombinationDisclosureTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODcvZnJhZzoyMDBlNzg3OGNmNGE0MzM0OTdiNzA5MzZhNGVmOWU1MC90ZXh0cmVnaW9uOjIwMGU3ODc4Y2Y0YTQzMzQ5N2I3MDkzNmE0ZWY5ZTUwXzI3NDI_e7b5b60d-3326-4a69-ae7e-ba4dac3f44e5">Business Acquisitions&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Sualab Co., Ltd.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;On October 16, 2019, the Company acquired all the outstanding shares of Sualab Co., Ltd. (Sualab), a provider of deep learning-based vision software for industrial image analysis based in Korea. The total consideration of $193,638,000 included cash payments of $170,602,000 upon closing. In the fourth quarter of 2020, the Company recorded a credit to goodwill in the amount of $1,004,000 representing a purchase price adjustment. The remaining consideration consists of deferred payments of $24,040,000 that may become payable in October 2023, contingent upon the continued employment of key talent, and is being recorded as compensation expense over the four-year period.&lt;/span&gt;&lt;/div&gt;Deteriorating global economic conditions from the COVID-19 pandemic triggered a review of long-lived assets for potential impairment in the second quarter of 2020. This review resulted in intangible asset impairment charges totaling $19,571,000 in the second quarter of 2020, primarily related to lower projected cash flows from the technologies and customer relationships acquired from Sualab. Completed technologies, in-process technologies, and customer relationships acquired from Sualab were impaired in the amounts of $10,070,000, $5,900,000, and $3,382,000, respectively.</us-gaap:BusinessCombinationDisclosureTextBlock>
    <us-gaap:BusinessCombinationConsiderationTransferred1
      contextRef="i0b6307f55f5e4750a8f66d44f395a2ba_D20191016-20191016"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODcvZnJhZzoyMDBlNzg3OGNmNGE0MzM0OTdiNzA5MzZhNGVmOWU1MC90ZXh0cmVnaW9uOjIwMGU3ODc4Y2Y0YTQzMzQ5N2I3MDkzNmE0ZWY5ZTUwXzI3NQ_8a3c2d78-2e9b-487b-b41d-26735a882737"
      unitRef="usd">193638000</us-gaap:BusinessCombinationConsiderationTransferred1>
    <us-gaap:PaymentsToAcquireBusinessesGross
      contextRef="i0b6307f55f5e4750a8f66d44f395a2ba_D20191016-20191016"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODcvZnJhZzoyMDBlNzg3OGNmNGE0MzM0OTdiNzA5MzZhNGVmOWU1MC90ZXh0cmVnaW9uOjIwMGU3ODc4Y2Y0YTQzMzQ5N2I3MDkzNmE0ZWY5ZTUwXzMwNA_2f443ba3-eb56-4b7a-a74d-d769a9dbf23d"
      unitRef="usd">170602000</us-gaap:PaymentsToAcquireBusinessesGross>
    <us-gaap:PaymentsForProceedsFromPreviousAcquisition
      contextRef="i237d35dadb3345778dc0eb90a293a886_D20200928-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODcvZnJhZzoyMDBlNzg3OGNmNGE0MzM0OTdiNzA5MzZhNGVmOWU1MC90ZXh0cmVnaW9uOjIwMGU3ODc4Y2Y0YTQzMzQ5N2I3MDkzNmE0ZWY5ZTUwXzEwOTk1MTE2Mzc0NjY_71980b38-59ba-4baf-a11c-69d110054906"
      unitRef="usd">1004000</us-gaap:PaymentsForProceedsFromPreviousAcquisition>
    <us-gaap:BusinessCombinationContingentConsiderationLiability
      contextRef="i9d7909d7f5534ecaae7d688eb528cbe5_I20191016"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODcvZnJhZzoyMDBlNzg3OGNmNGE0MzM0OTdiNzA5MzZhNGVmOWU1MC90ZXh0cmVnaW9uOjIwMGU3ODc4Y2Y0YTQzMzQ5N2I3MDkzNmE0ZWY5ZTUwXzUyNQ_68f123c2-3103-4d9f-8cf3-a10fd0aa6cfb"
      unitRef="usd">24040000</us-gaap:BusinessCombinationContingentConsiderationLiability>
    <us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill
      contextRef="ib02ea70179e047879c445fd8d0e9275f_D20200330-20200628"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODcvZnJhZzoyMDBlNzg3OGNmNGE0MzM0OTdiNzA5MzZhNGVmOWU1MC90ZXh0cmVnaW9uOjIwMGU3ODc4Y2Y0YTQzMzQ5N2I3MDkzNmE0ZWY5ZTUwXzIwNTM_f18dc054-73ea-4a92-b4ab-34859881e23e"
      unitRef="usd">19571000</us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill>
    <us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill
      contextRef="i5694e3e1d7f2467781e7455fe169436f_D20200330-20200628"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODcvZnJhZzoyMDBlNzg3OGNmNGE0MzM0OTdiNzA5MzZhNGVmOWU1MC90ZXh0cmVnaW9uOjIwMGU3ODc4Y2Y0YTQzMzQ5N2I3MDkzNmE0ZWY5ZTUwXzIzMzU_d9f130a9-401e-46f3-95cb-ef777d6c1f51"
      unitRef="usd">10070000</us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill>
    <us-gaap:ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill
      contextRef="ia44f7d0ad1ef42c39fdbc370ebfbe435_D20200330-20200628"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODcvZnJhZzoyMDBlNzg3OGNmNGE0MzM0OTdiNzA5MzZhNGVmOWU1MC90ZXh0cmVnaW9uOjIwMGU3ODc4Y2Y0YTQzMzQ5N2I3MDkzNmE0ZWY5ZTUwXzIzMzk_43329db6-618e-4ce9-b01a-daf02fb30f2b"
      unitRef="usd">5900000</us-gaap:ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill>
    <us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill
      contextRef="i709ffb5b1f3f4e8a8d0cae96d0146633_D20200330-20200628"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODcvZnJhZzoyMDBlNzg3OGNmNGE0MzM0OTdiNzA5MzZhNGVmOWU1MC90ZXh0cmVnaW9uOjIwMGU3ODc4Y2Y0YTQzMzQ5N2I3MDkzNmE0ZWY5ZTUwXzIzNDc_0a145e11-dd7a-47dd-b147-ca94007fe27f"
      unitRef="usd">3382000</us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill>
    <us-gaap:RestructuringAndRelatedActivitiesDisclosureTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90ZXh0cmVnaW9uOmE3MjllZTg4NDNjZDQ0MWM4NDRlNGQ3ODkxNDNmMWUwXzI1NzU_264b0137-75fc-49fc-b4c5-a9714a548593">Restructuring Charges&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;On May 26, 2020, the Company's Board of Directors approved a restructuring plan intended to reduce the Company's operating costs, optimize its business model, and address the impact of the COVID-19 pandemic. The restructuring plan included a global workforce reduction of approximately 8% and office closures. The Company recorded restructuring charges from these actions totaling $15,924,000 in 2020 which are included in &#x201c;Restructuring charges&#x201d; on the Consolidated Statements of Operations. As of December 31, 2020, the majority of these actions were completed and no additional charges are expected to be incurred in future periods in relation to this restructuring plan. There were no restructuring charges recognized in 2021.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align:justify"&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the restructuring charges for the year ended December 31, 2020 (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:72.876%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:24.194%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Amount&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;One-time termination benefits&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;10,159&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Contract termination costs&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,207&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Other associated costs&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;558&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;15,924&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;One-time termination benefits included severance, health insurance, and outplacement services for 181 employees who were either terminated during the second quarter of 2020, or were notified during the second quarter of 2020 that they would be terminated at a future date. For employees not required to render service beyond a minimum retention period, the one-time termination benefits were recognized in the second quarter of 2020. Otherwise, these benefits, including retention bonuses for selected employees, were recognized over the remaining service period which was completed by December 31, 2020.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Contract termination costs included operating lease asset impairment charges for eleven offices closed prior to the end of the contractual lease term. These costs also included the write-off of leasehold improvements and other equipment related to these abandoned offices that had no alternative use, as well as other associated operating costs, such as utilities, that the Company is obligated to pay for the remainder of the lease term. These contract termination costs were primarily recognized in the second quarter of 2020 when the Company ceased using the property for economic benefit. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Other associated costs primarily included legal fees related to the employee termination actions, which were recognized when the services were performed. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:16pt;margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the activity in the Company&#x2019;s restructuring reserve, which is included in &#x201c;Accrued expenses&#x201d; on the Consolidated Balance Sheets (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:38.227%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.104%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.384%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.081%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.384%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.788%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.384%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.548%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;One-time Termination Benefits&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Contract Termination Costs&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Other Associated Costs&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Total&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2019&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Restructuring charges&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;11,329&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,220&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;636&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;17,185&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Cash payments&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(8,717)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(317)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(563)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(9,597)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Non-cash restructuring charges&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(4,163)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(4,163)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Restructuring adjustments&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1,170)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(13)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(78)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(1,261)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign exchange rate changes&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;182&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;23&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;20&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;225&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;1,624&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;750&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;15&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;2,389&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Cash payments&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1,142)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(227)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(15)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(1,384)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign exchange rate changes&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(7)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(7)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;482&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;516&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;998&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;Restructuring adjustments related to one-time termination benefits consisted primarily of the favorable true-up of severance estimates based on final agreements and health insurance estimates based on employee elections.</us-gaap:RestructuringAndRelatedActivitiesDisclosureTextBlock>
    <us-gaap:RestructuringAndRelatedCostNumberOfPositionsEliminatedInceptionToDatePercent
      contextRef="i9ff3a1f2d3354f8b9e1a3862c0d45393_I20200526"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90ZXh0cmVnaW9uOmE3MjllZTg4NDNjZDQ0MWM4NDRlNGQ3ODkxNDNmMWUwXzMyMw_92c4a693-f824-4f89-8b3c-4dcfc2194f87"
      unitRef="number">0.08</us-gaap:RestructuringAndRelatedCostNumberOfPositionsEliminatedInceptionToDatePercent>
    <us-gaap:RestructuringCharges
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90ZXh0cmVnaW9uOmE3MjllZTg4NDNjZDQ0MWM4NDRlNGQ3ODkxNDNmMWUwXzQxOA_cad14c00-8c13-4a8f-9b95-865f623d4ff1"
      unitRef="usd">15924000</us-gaap:RestructuringCharges>
    <us-gaap:ScheduleOfRestructuringAndRelatedCostsTextBlock
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90ZXh0cmVnaW9uOmE3MjllZTg4NDNjZDQ0MWM4NDRlNGQ3ODkxNDNmMWUwXzI1NzM_97ef8f96-2fc4-4708-a651-5534e354caa2">&lt;div&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the restructuring charges for the year ended December 31, 2020 (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:72.876%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:24.194%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Amount&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;One-time termination benefits&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;10,159&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Contract termination costs&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,207&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Other associated costs&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;558&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;15,924&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfRestructuringAndRelatedCostsTextBlock>
    <us-gaap:RestructuringCharges
      contextRef="i37df6f70493e443da67537c212115ae6_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozMWZkOTU4ZTVmZmI0MTBjYTkyMTMyNjA0MTQyODMxNi90YWJsZXJhbmdlOjMxZmQ5NThlNWZmYjQxMGNhOTIxMzI2MDQxNDI4MzE2XzEtMy0xLTEtMjg4MDU_37c5b8d5-6cf8-4a91-82a2-582c23638c3f"
      unitRef="usd">10159000</us-gaap:RestructuringCharges>
    <us-gaap:RestructuringCharges
      contextRef="i0045cc5a44304747895b82294c5175c6_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozMWZkOTU4ZTVmZmI0MTBjYTkyMTMyNjA0MTQyODMxNi90YWJsZXJhbmdlOjMxZmQ5NThlNWZmYjQxMGNhOTIxMzI2MDQxNDI4MzE2XzItMy0xLTEtMjg4MDU_25b2f15e-d1f9-457d-a41a-d9599ae7ee31"
      unitRef="usd">5207000</us-gaap:RestructuringCharges>
    <us-gaap:RestructuringCharges
      contextRef="if297a806261f492eba965b248dda338d_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozMWZkOTU4ZTVmZmI0MTBjYTkyMTMyNjA0MTQyODMxNi90YWJsZXJhbmdlOjMxZmQ5NThlNWZmYjQxMGNhOTIxMzI2MDQxNDI4MzE2XzMtMy0xLTEtMjg4MDU_ecb3f7d8-26dc-419f-bec4-ddef4fcc83e6"
      unitRef="usd">558000</us-gaap:RestructuringCharges>
    <us-gaap:RestructuringCharges
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozMWZkOTU4ZTVmZmI0MTBjYTkyMTMyNjA0MTQyODMxNi90YWJsZXJhbmdlOjMxZmQ5NThlNWZmYjQxMGNhOTIxMzI2MDQxNDI4MzE2XzQtMy0xLTEtMjg4MDU_e21f38c2-207a-475a-98e4-898ceb0e7dec"
      unitRef="usd">15924000</us-gaap:RestructuringCharges>
    <us-gaap:RestructuringAndRelatedCostNumberOfPositionsEliminated
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90ZXh0cmVnaW9uOmE3MjllZTg4NDNjZDQ0MWM4NDRlNGQ3ODkxNDNmMWUwXzkxOA_3b3ca0cc-8065-42ac-8c06-bdd2b3b0f1bf"
      unitRef="employees">181</us-gaap:RestructuringAndRelatedCostNumberOfPositionsEliminated>
    <us-gaap:ScheduleOfRestructuringReserveByTypeOfCostTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90ZXh0cmVnaW9uOmE3MjllZTg4NDNjZDQ0MWM4NDRlNGQ3ODkxNDNmMWUwXzI1NzQ_884fb63b-838d-4527-af0d-759aa82f112c">&lt;div style="margin-bottom:16pt;margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the activity in the Company&#x2019;s restructuring reserve, which is included in &#x201c;Accrued expenses&#x201d; on the Consolidated Balance Sheets (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:38.227%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.104%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.384%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.081%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.384%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.788%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.384%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.548%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;One-time Termination Benefits&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Contract Termination Costs&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Other Associated Costs&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Total&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2019&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Restructuring charges&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;11,329&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,220&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;636&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;17,185&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Cash payments&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(8,717)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(317)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(563)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(9,597)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Non-cash restructuring charges&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(4,163)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(4,163)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Restructuring adjustments&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1,170)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(13)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(78)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(1,261)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign exchange rate changes&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;182&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;23&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;20&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;225&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;1,624&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;750&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;15&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;2,389&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Cash payments&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1,142)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(227)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(15)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(1,384)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign exchange rate changes&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(7)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(7)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;482&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;516&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;998&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfRestructuringReserveByTypeOfCostTextBlock>
    <us-gaap:RestructuringReserve
      contextRef="i7a0d52863fc64903a1109399c06704c4_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzEtMS0xLTEtMjg4MDU_7eda4e14-65a2-4924-accc-232a7b4ce42c"
      unitRef="usd">0</us-gaap:RestructuringReserve>
    <us-gaap:RestructuringReserve
      contextRef="idb40d4ead52e4f36857491315a43c857_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzEtMy0xLTEtMjg4MDU_a63afe9d-1665-472d-86ea-8ce351ab4fca"
      unitRef="usd">0</us-gaap:RestructuringReserve>
    <us-gaap:RestructuringReserve
      contextRef="iba8f6eeab77d4be9ab1ba46ab39e7c44_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzEtNS0xLTEtMjg4MDU_44f5a097-a754-45c0-bcf1-161aa246a621"
      unitRef="usd">0</us-gaap:RestructuringReserve>
    <us-gaap:RestructuringReserve
      contextRef="ic9333dbc34ff416cb78724fc271fe455_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzEtNy0xLTEtMjg4MDU_c5172119-9fd9-418d-94ab-e6edac5b104d"
      unitRef="usd">0</us-gaap:RestructuringReserve>
    <us-gaap:RestructuringCharges
      contextRef="i9ceed9a458bf44ee8b056fd943935d7b_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzItMS0xLTEtMjg4MDU_244ba3d4-1613-4fda-8db6-ad3a3c6d7775"
      unitRef="usd">11329000</us-gaap:RestructuringCharges>
    <us-gaap:RestructuringCharges
      contextRef="ia041977fa65d4c6aaae16793e77f0f59_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzItMy0xLTEtMjg4MDU_f5e03248-b587-4b0f-8be0-acec33e2410a"
      unitRef="usd">5220000</us-gaap:RestructuringCharges>
    <us-gaap:RestructuringCharges
      contextRef="iea33b0ef270a4304a674a351f2a3ea2c_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzItNS0xLTEtMjg4MDU_53cc9fa9-8de1-45d6-bdca-ae5fa3d6a9ba"
      unitRef="usd">636000</us-gaap:RestructuringCharges>
    <us-gaap:RestructuringCharges
      contextRef="i0667b335c8d842be8dbe3b6c483d1fba_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzItNy0xLTEtMjg4MDU_06c841d2-6925-4aab-98b1-05932ff7a44c"
      unitRef="usd">17185000</us-gaap:RestructuringCharges>
    <us-gaap:PaymentsForRestructuring
      contextRef="i9ceed9a458bf44ee8b056fd943935d7b_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzMtMS0xLTEtMjg4MDU_a2188970-d6c3-4edf-97b7-0b3c80bede51"
      unitRef="usd">8717000</us-gaap:PaymentsForRestructuring>
    <us-gaap:PaymentsForRestructuring
      contextRef="ia041977fa65d4c6aaae16793e77f0f59_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzMtMy0xLTEtMjg4MDU_8065d37f-21cc-4a2d-8f54-04c8a180bfb9"
      unitRef="usd">317000</us-gaap:PaymentsForRestructuring>
    <us-gaap:PaymentsForRestructuring
      contextRef="iea33b0ef270a4304a674a351f2a3ea2c_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzMtNS0xLTEtMjg4MDU_205f2944-1286-467e-af7c-d80f2221ffbf"
      unitRef="usd">563000</us-gaap:PaymentsForRestructuring>
    <us-gaap:PaymentsForRestructuring
      contextRef="i0667b335c8d842be8dbe3b6c483d1fba_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzMtNy0xLTEtMjg4MDU_119e00e8-2b25-4fca-99f3-264ce4697df0"
      unitRef="usd">9597000</us-gaap:PaymentsForRestructuring>
    <us-gaap:RestructuringReserveSettledWithoutCash2
      contextRef="i9ceed9a458bf44ee8b056fd943935d7b_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzQtMS0xLTEtMjg4MDU_0c578a22-5d47-4085-8f0a-c1e1e23b516d"
      unitRef="usd">0</us-gaap:RestructuringReserveSettledWithoutCash2>
    <us-gaap:RestructuringReserveSettledWithoutCash2
      contextRef="ia041977fa65d4c6aaae16793e77f0f59_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzQtMy0xLTEtMjg4MDU_828a50c7-1798-4b12-ad5e-280c80c36023"
      unitRef="usd">4163000</us-gaap:RestructuringReserveSettledWithoutCash2>
    <us-gaap:RestructuringReserveSettledWithoutCash2
      contextRef="iea33b0ef270a4304a674a351f2a3ea2c_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzQtNS0xLTEtMjg4MDU_ce822bdf-3ffb-4a98-a9e5-73be56ad7eee"
      unitRef="usd">0</us-gaap:RestructuringReserveSettledWithoutCash2>
    <us-gaap:RestructuringReserveSettledWithoutCash2
      contextRef="i0667b335c8d842be8dbe3b6c483d1fba_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzQtNy0xLTEtMjg4MDU_fdbb372f-a513-4646-b381-9b1992a773a1"
      unitRef="usd">4163000</us-gaap:RestructuringReserveSettledWithoutCash2>
    <us-gaap:RestructuringReserveAccrualAdjustment1
      contextRef="i9ceed9a458bf44ee8b056fd943935d7b_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzUtMS0xLTEtMjg4MDU_1cfac3e1-96e1-4ec2-a11d-82e5add7c1b2"
      unitRef="usd">-1170000</us-gaap:RestructuringReserveAccrualAdjustment1>
    <us-gaap:RestructuringReserveAccrualAdjustment1
      contextRef="ia041977fa65d4c6aaae16793e77f0f59_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzUtMy0xLTEtMjg4MDU_a536b9e6-30c5-4fc8-b897-3e32a523a911"
      unitRef="usd">-13000</us-gaap:RestructuringReserveAccrualAdjustment1>
    <us-gaap:RestructuringReserveAccrualAdjustment1
      contextRef="iea33b0ef270a4304a674a351f2a3ea2c_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzUtNS0xLTEtMjg4MDU_db2f8b0e-36bc-45fe-ba80-5f07eca333cd"
      unitRef="usd">-78000</us-gaap:RestructuringReserveAccrualAdjustment1>
    <us-gaap:RestructuringReserveAccrualAdjustment1
      contextRef="i0667b335c8d842be8dbe3b6c483d1fba_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzUtNy0xLTEtMjg4MDU_ef28b8cc-15a4-489c-86b5-7414fde67559"
      unitRef="usd">-1261000</us-gaap:RestructuringReserveAccrualAdjustment1>
    <us-gaap:RestructuringReserveTranslationAdjustment
      contextRef="i9ceed9a458bf44ee8b056fd943935d7b_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzYtMS0xLTEtMjg4MDU_b0991e49-39bf-43c5-8652-2de4f155331d"
      unitRef="usd">182000</us-gaap:RestructuringReserveTranslationAdjustment>
    <us-gaap:RestructuringReserveTranslationAdjustment
      contextRef="ia041977fa65d4c6aaae16793e77f0f59_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzYtMy0xLTEtMjg4MDU_ba41d2eb-7993-4241-bca0-c44c1a88cd7a"
      unitRef="usd">23000</us-gaap:RestructuringReserveTranslationAdjustment>
    <us-gaap:RestructuringReserveTranslationAdjustment
      contextRef="iea33b0ef270a4304a674a351f2a3ea2c_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzYtNS0xLTEtMjg4MDU_a3886c95-10b9-41f4-93ca-c1adc5762d26"
      unitRef="usd">20000</us-gaap:RestructuringReserveTranslationAdjustment>
    <us-gaap:RestructuringReserveTranslationAdjustment
      contextRef="i0667b335c8d842be8dbe3b6c483d1fba_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzYtNy0xLTEtMjg4MDU_e61ccb78-e87e-412f-8f4e-1b9702f734ce"
      unitRef="usd">225000</us-gaap:RestructuringReserveTranslationAdjustment>
    <us-gaap:RestructuringReserve
      contextRef="ib7bc21127ccf42c5bc8aaa79832c5c1a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzctMS0xLTEtMjg4MDU_8a9b833b-7f8e-44ee-b290-5d8840995895"
      unitRef="usd">1624000</us-gaap:RestructuringReserve>
    <us-gaap:RestructuringReserve
      contextRef="ie3121f3a9e4f4a46a3cc68910d57a5fd_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzctMy0xLTEtMjg4MDU_70991245-5311-4b6e-892a-d7e3944b1c97"
      unitRef="usd">750000</us-gaap:RestructuringReserve>
    <us-gaap:RestructuringReserve
      contextRef="ia644d53df91e4028845acea026614935_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzctNS0xLTEtMjg4MDU_c4bf920f-b02f-448b-b7bc-ef3f672ead8a"
      unitRef="usd">15000</us-gaap:RestructuringReserve>
    <us-gaap:RestructuringReserve
      contextRef="i718830787ba64d9698a6ce9053392157_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzctNy0xLTEtMjg4MDU_983ed93a-ed1a-4930-8454-777bb7f642b1"
      unitRef="usd">2389000</us-gaap:RestructuringReserve>
    <us-gaap:PaymentsForRestructuring
      contextRef="i866e735aa0864c379813d523bdaf5c23_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzktMS0xLTEtMzE4OTk_5a873642-660d-4dc4-88a4-03fd581196c0"
      unitRef="usd">1142000</us-gaap:PaymentsForRestructuring>
    <us-gaap:PaymentsForRestructuring
      contextRef="i37af8fbc3f53404ab2fef91376a1d69c_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzktMy0xLTEtMzE4OTk_c0eed3d1-adc6-49c5-a142-e469783c0356"
      unitRef="usd">227000</us-gaap:PaymentsForRestructuring>
    <us-gaap:PaymentsForRestructuring
      contextRef="id47c906173ab4edf85ec11a56adf1772_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzktNS0xLTEtMzE4OTk_c39ebe70-c40d-4230-9dd6-91bf531210da"
      unitRef="usd">15000</us-gaap:PaymentsForRestructuring>
    <us-gaap:PaymentsForRestructuring
      contextRef="i17e03758bb2b4992a21fd36d624da0aa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzktNy0xLTEtMzE4OTk_8b48ff4a-3a4c-4b55-8c99-98b77fbfb263"
      unitRef="usd">1384000</us-gaap:PaymentsForRestructuring>
    <us-gaap:RestructuringReserveTranslationAdjustment
      contextRef="i866e735aa0864c379813d523bdaf5c23_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzEyLTEtMS0xLTMxODk5_eb31acca-c248-4658-9dc3-0400cf4b69b1"
      unitRef="usd">0</us-gaap:RestructuringReserveTranslationAdjustment>
    <us-gaap:RestructuringReserveTranslationAdjustment
      contextRef="i37af8fbc3f53404ab2fef91376a1d69c_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzEyLTMtMS0xLTMxODk5_aef82e78-fba2-46d7-a9bf-ff6f3d47a363"
      unitRef="usd">-7000</us-gaap:RestructuringReserveTranslationAdjustment>
    <us-gaap:RestructuringReserveTranslationAdjustment
      contextRef="id47c906173ab4edf85ec11a56adf1772_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzEyLTUtMS0xLTMxODk5_2c36355f-ecf5-4398-aa5e-f5f08aa3c928"
      unitRef="usd">0</us-gaap:RestructuringReserveTranslationAdjustment>
    <us-gaap:RestructuringReserveTranslationAdjustment
      contextRef="i17e03758bb2b4992a21fd36d624da0aa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzEyLTctMS0xLTMxODk5_bd7ca028-bc9c-4ad9-bb26-22538946cc05"
      unitRef="usd">-7000</us-gaap:RestructuringReserveTranslationAdjustment>
    <us-gaap:RestructuringReserve
      contextRef="ib389c9638e4c4a1d98465f63dd2ef34f_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzEzLTEtMS0xLTMxOTMx_56d48ade-0b47-4554-925b-23df5c2fd77e"
      unitRef="usd">482000</us-gaap:RestructuringReserve>
    <us-gaap:RestructuringReserve
      contextRef="iee99fc76bf3243cbb665a0905540cbb9_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzEzLTMtMS0xLTMxOTMx_9186d782-31d3-40a3-a3cd-9b69e01ab3d5"
      unitRef="usd">516000</us-gaap:RestructuringReserve>
    <us-gaap:RestructuringReserve
      contextRef="i0c0cc45df87a4b288075510563ebd8e5_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzEzLTUtMS0xLTMxOTMx_5a03bc1b-84c9-4056-b9cb-a8cffab329e5"
      unitRef="usd">0</us-gaap:RestructuringReserve>
    <us-gaap:RestructuringReserve
      contextRef="iac93fa12ce9346e89d74784d16a4f197_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzEzLTctMS0xLTMxOTMx_3208ef0c-df3d-4172-8350-299272da6d73"
      unitRef="usd">998000</us-gaap:RestructuringReserve>
    <us-gaap:SubsequentEventsTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTYvZnJhZzowMzFjYjRmZWNjMGY0MmQxYTAyYTEyNjhkYmY1MWU0Mi90ZXh0cmVnaW9uOjAzMWNiNGZlY2MwZjQyZDFhMDJhMTI2OGRiZjUxZTQyXzIxOQ_f1167668-9c8a-4d88-8386-ff2cc9eaed2b">Subsequent EventsOn February 17, 2022, the Company's Board of Directors declared a cash dividend of $0.065 per share. The dividend is payable March 18, 2022 to all shareholders of record as of the close of business on March 4, 2022.</us-gaap:SubsequentEventsTextBlock>
    <us-gaap:DividendsPayableAmountPerShare
      contextRef="ia0707d1af0314a219bcf26b1a7beb49a_I20220217"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTYvZnJhZzowMzFjYjRmZWNjMGY0MmQxYTAyYTEyNjhkYmY1MWU0Mi90ZXh0cmVnaW9uOjAzMWNiNGZlY2MwZjQyZDFhMDJhMTI2OGRiZjUxZTQyXzExNQ_52a52791-96e0-4e22-bb9c-407b6dd6ad69"
      unitRef="usdPerShare">0.065</us-gaap:DividendsPayableAmountPerShare>
    <us-gaap:DividendsPayableDateDeclaredDayMonthAndYear
      contextRef="i95b24cde8acc45068c6d6ce49f08b624_D20220217-20220217"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTYvZnJhZzowMzFjYjRmZWNjMGY0MmQxYTAyYTEyNjhkYmY1MWU0Mi90ZXh0cmVnaW9uOjAzMWNiNGZlY2MwZjQyZDFhMDJhMTI2OGRiZjUxZTQyXzE1Mw_0c7efb42-1e82-49a0-b657-226202fa0e8b">2022-03-18</us-gaap:DividendsPayableDateDeclaredDayMonthAndYear>
    <us-gaap:DividendsPayableDateOfRecordDayMonthAndYear
      contextRef="i95b24cde8acc45068c6d6ce49f08b624_D20220217-20220217"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTYvZnJhZzowMzFjYjRmZWNjMGY0MmQxYTAyYTEyNjhkYmY1MWU0Mi90ZXh0cmVnaW9uOjAzMWNiNGZlY2MwZjQyZDFhMDJhMTI2OGRiZjUxZTQyXzIxNw_519e290b-5b12-496e-841d-09b3fc52f25c">2022-03-04</us-gaap:DividendsPayableDateOfRecordDayMonthAndYear>
    <srt:ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90ZXh0cmVnaW9uOmM2OGQyYWY0NzU1ZTRkZWJhZjBiNjc2MjY2MzFhZGMzXzEzNg_b4b9caf0-8cac-4dc2-920b-a03735d0e41b">SCHEDULE II &#x2013; VALUATION AND QUALIFYING ACCOUNTS&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.269%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:30.711%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.536%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:8.472%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.536%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:8.472%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.536%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:8.472%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.536%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:8.914%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:2.581%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:8.472%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:2.581%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:8.481%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Additions&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Description&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Balance&#160;at&lt;br/&gt;Beginning&lt;br/&gt;of Period&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Charged&#160;to&lt;br/&gt;Costs and&lt;br/&gt;Expenses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Charged&lt;br/&gt;to Other&lt;br/&gt;Accounts&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Deductions&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Other&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Balance&#160;at&lt;br/&gt;End of&lt;br/&gt;Period&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="33" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;(In thousands)&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Allowance for Credit Losses on Accounts Receivable:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;831&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(55)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;(1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;(2)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;776&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;530&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;600&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(300)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;(1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;(2)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;831&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2019&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;596&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;215&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(286)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;(1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;(2)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;530&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Reserve&#160;for Sales Returns:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,291&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;227&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;(1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;(2)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,518&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,291&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;(1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;(2)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,291&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2019&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,050&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;225&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;(1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;16&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;(2)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,291&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Deferred Tax Valuation Allowance:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;8,568&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,420&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1,800)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;8,188&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;7,312&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,256&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;8,568&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2019&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,112&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,200&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;7,312&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt;padding-left:36pt;text-indent:-36pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;(1)&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:23.78pt"&gt;Specific write-offs&lt;/span&gt;&lt;/div&gt;&lt;div style="padding-left:36pt;text-indent:-36pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;(2)&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:23.78pt"&gt;Foreign currency exchange rate changes&lt;/span&gt;&lt;/div&gt;</srt:ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i6d0d3605ae3a47539276eb78b04403f8_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzQtMi0xLTEtMjg4MDU_11e22b5e-c965-4050-bf2e-398696495915"
      unitRef="usd">831000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense
      contextRef="i59ec5527ba8e4d059be06b2de8827813_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzQtNC0xLTEtMjg4MDU_2f154ae6-cea2-4348-89c3-81541d3af325"
      unitRef="usd">0</us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense>
    <us-gaap:ValuationAllowancesAndReservesDeductions
      contextRef="i59ec5527ba8e4d059be06b2de8827813_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzQtOC0xLTEtMjg4MDU_b1ba36a8-5899-4fa6-ac9a-dede1261bb04"
      unitRef="usd">55000</us-gaap:ValuationAllowancesAndReservesDeductions>
    <us-gaap:ValuationAllowancesAndReservesAdjustments
      contextRef="i59ec5527ba8e4d059be06b2de8827813_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzQtMTAtMS0xLTI4ODA1_96d1472f-8be3-4e41-996f-1adc322383f9"
      unitRef="usd">0</us-gaap:ValuationAllowancesAndReservesAdjustments>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i5ee1836468e946feba304dc524cc45e2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzQtMTItMS0xLTI4ODA1_2be33b75-cfc6-4f22-b133-84bbaa65e623"
      unitRef="usd">776000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i3dbe155ff0004ff98791a6784bd4c861_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzUtMi0xLTEtMjg4MDU_dec0cb85-62b4-4a5c-bb4b-de2a5930bf0c"
      unitRef="usd">530000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense
      contextRef="i770852fc55a6463e8da481d0bf571699_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzUtNC0xLTEtMjg4MDU_23aa080b-4674-4b54-a24e-498314783e9b"
      unitRef="usd">600000</us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense>
    <us-gaap:ValuationAllowancesAndReservesDeductions
      contextRef="i770852fc55a6463e8da481d0bf571699_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzUtOC0xLTEtMjg4MDU_96ebc5f2-63cd-4b83-b4ec-97fc34c60e12"
      unitRef="usd">300000</us-gaap:ValuationAllowancesAndReservesDeductions>
    <us-gaap:ValuationAllowancesAndReservesAdjustments
      contextRef="i770852fc55a6463e8da481d0bf571699_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzUtMTAtMS0xLTI4ODA1_3bbf00fc-d3a3-4855-8367-83a8c2820bef"
      unitRef="usd">1000</us-gaap:ValuationAllowancesAndReservesAdjustments>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i6d0d3605ae3a47539276eb78b04403f8_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzUtMTItMS0xLTI4ODA1_1b9af348-33dd-49f2-aaa5-29db063463b2"
      unitRef="usd">831000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="id3be38a15bc644abb5cb39c413e9327b_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzYtMi0xLTEtMjg4MDU_a5902860-ce23-4d21-bf3d-4a14ff6b99e1"
      unitRef="usd">596000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense
      contextRef="iee5da482094546e299baa3d92293d330_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzYtNC0xLTEtMjg4MDU_a9228485-fb86-4665-941a-ba27d3304ed2"
      unitRef="usd">215000</us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense>
    <us-gaap:ValuationAllowancesAndReservesDeductions
      contextRef="iee5da482094546e299baa3d92293d330_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzYtOC0xLTEtMjg4MDU_fae6bc3e-bae2-4683-abea-5e020d9fc894"
      unitRef="usd">286000</us-gaap:ValuationAllowancesAndReservesDeductions>
    <us-gaap:ValuationAllowancesAndReservesAdjustments
      contextRef="iee5da482094546e299baa3d92293d330_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzYtMTAtMS0xLTI4ODA1_481d1e62-7151-4f77-9614-f0f92849d35d"
      unitRef="usd">5000</us-gaap:ValuationAllowancesAndReservesAdjustments>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i3dbe155ff0004ff98791a6784bd4c861_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzYtMTItMS0xLTI4ODA1_339e5b56-c733-441a-8e3a-57fb4ccb0c46"
      unitRef="usd">530000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i2131ea7c04b54b24a5d7cbceda55413f_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzgtMi0xLTEtMjg4MDU_c8be0117-1977-4a73-9b75-9ca58aced10d"
      unitRef="usd">1291000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense
      contextRef="i32a8205607454b739eb248993c515fd1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzgtNC0xLTEtMjg4MDU_7292cc34-7327-42ec-8df8-21a128ce64bc"
      unitRef="usd">0</us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense>
    <us-gaap:ValuationAllowancesAndReservesChargedToOtherAccounts
      contextRef="i32a8205607454b739eb248993c515fd1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzgtNi0xLTEtNDA0MzI_066e41fd-750c-41fe-862e-ab87ded7a97c"
      unitRef="usd">227000</us-gaap:ValuationAllowancesAndReservesChargedToOtherAccounts>
    <us-gaap:ValuationAllowancesAndReservesDeductions
      contextRef="i32a8205607454b739eb248993c515fd1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzgtOC0xLTEtMjg4MDU_86769c5b-cb60-4706-912c-77f3832e8d19"
      unitRef="usd">0</us-gaap:ValuationAllowancesAndReservesDeductions>
    <us-gaap:ValuationAllowancesAndReservesAdjustments
      contextRef="i32a8205607454b739eb248993c515fd1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzgtMTAtMS0xLTI4ODA1_23ce4753-339d-47eb-b5f4-7913ace49b7b"
      unitRef="usd">0</us-gaap:ValuationAllowancesAndReservesAdjustments>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i72aa6831b808442cacbb8b5967d7fa20_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzgtMTItMS0xLTI4ODA1_85f9bcbe-609b-497b-bfdf-5fe0dd3c4af4"
      unitRef="usd">1518000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="ib429e8609f0f44a1954e51d83ac80522_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzktMi0xLTEtMjg4MDU_2dfb222b-8e92-410b-889e-53fac2be27de"
      unitRef="usd">1291000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense
      contextRef="i569ccce4c96e48c391d700361bf6abcc_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzktNC0xLTEtMjg4MDU_649cddd4-ffb1-4ac3-938c-1a14ff7ad7f6"
      unitRef="usd">0</us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense>
    <us-gaap:ValuationAllowancesAndReservesDeductions
      contextRef="i569ccce4c96e48c391d700361bf6abcc_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzktOC0xLTEtMjg4MDU_10f8aec6-add0-4fe9-8b9e-5c6a19f6cf88"
      unitRef="usd">0</us-gaap:ValuationAllowancesAndReservesDeductions>
    <us-gaap:ValuationAllowancesAndReservesAdjustments
      contextRef="i569ccce4c96e48c391d700361bf6abcc_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzktMTAtMS0xLTI4ODA1_7a8cd3c4-90aa-4a28-ae1d-724041490453"
      unitRef="usd">0</us-gaap:ValuationAllowancesAndReservesAdjustments>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i2131ea7c04b54b24a5d7cbceda55413f_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzktMTItMS0xLTI4ODA1_2afedadf-da60-45fa-adbb-1f614e2f043f"
      unitRef="usd">1291000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i407ba1b76823440abdd13f6172c63277_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzEwLTItMS0xLTI4ODA1_f9393f3e-e365-419b-a09d-2fa7b3ec8e7a"
      unitRef="usd">1050000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense
      contextRef="if82943db9b87496a88e504bd346dacaa_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzEwLTQtMS0xLTI4ODA1_a069a74a-51b5-4c54-a795-469c5c58f423"
      unitRef="usd">225000</us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense>
    <us-gaap:ValuationAllowancesAndReservesDeductions
      contextRef="if82943db9b87496a88e504bd346dacaa_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzEwLTgtMS0xLTI4ODA1_5f28dfec-3922-40c4-830c-85e41b101688"
      unitRef="usd">0</us-gaap:ValuationAllowancesAndReservesDeductions>
    <us-gaap:ValuationAllowancesAndReservesAdjustments
      contextRef="if82943db9b87496a88e504bd346dacaa_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzEwLTEwLTEtMS0yODgwNQ_a5ef22de-fef6-440f-a249-b7c8eee7001c"
      unitRef="usd">16000</us-gaap:ValuationAllowancesAndReservesAdjustments>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="ib429e8609f0f44a1954e51d83ac80522_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzEwLTEyLTEtMS0yODgwNQ_58c25d02-49ef-4ef6-b25e-f9f8958e7a5c"
      unitRef="usd">1291000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i1602cc3e102c42a98e804619365a09b5_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzEyLTItMS0xLTI4ODA1_4d19574c-cf49-4ca3-9929-05bfd0275a54"
      unitRef="usd">8568000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense
      contextRef="ic9d78e6e8ba84362a8454525b56bf115_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzEyLTQtMS0xLTI4ODA1_8e303289-ccfe-4b90-b1aa-83fc4e70f003"
      unitRef="usd">1420000</us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense>
    <us-gaap:ValuationAllowancesAndReservesDeductions
      contextRef="ic9d78e6e8ba84362a8454525b56bf115_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzEyLTgtMS0xLTI4ODA1_db359c2d-1fac-4548-8a27-1116172a2609"
      unitRef="usd">1800000</us-gaap:ValuationAllowancesAndReservesDeductions>
    <us-gaap:ValuationAllowancesAndReservesAdjustments
      contextRef="ic9d78e6e8ba84362a8454525b56bf115_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzEyLTEwLTEtMS0yODgwNQ_61a183d8-d48e-41b1-90ed-1a60eb11bfd2"
      unitRef="usd">0</us-gaap:ValuationAllowancesAndReservesAdjustments>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="idf98d43520b547b68e3e7b727e376e60_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzEyLTEyLTEtMS0yODgwNQ_b8a84040-e6ae-4328-a9d1-c5291ec2bffd"
      unitRef="usd">8188000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i4b26a9dc49044a46bd0bf68ff53f08b8_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzEzLTItMS0xLTI4ODA1_408e07d8-ce5a-4707-92b6-639b43506ce9"
      unitRef="usd">7312000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense
      contextRef="i2aee6672bd814cc595d6c10f9eedd0b1_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzEzLTQtMS0xLTI4ODA1_98d9fb36-42f2-413d-951c-c7385e967fa2"
      unitRef="usd">1256000</us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense>
    <us-gaap:ValuationAllowancesAndReservesDeductions
      contextRef="i2aee6672bd814cc595d6c10f9eedd0b1_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzEzLTgtMS0xLTI4ODA1_b99e1686-374f-4e6b-af8f-6952fab58ab1"
      unitRef="usd">0</us-gaap:ValuationAllowancesAndReservesDeductions>
    <us-gaap:ValuationAllowancesAndReservesAdjustments
      contextRef="i2aee6672bd814cc595d6c10f9eedd0b1_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzEzLTEwLTEtMS0yODgwNQ_2510c32a-c467-4104-bb05-b2c64a26b1f6"
      unitRef="usd">0</us-gaap:ValuationAllowancesAndReservesAdjustments>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i1602cc3e102c42a98e804619365a09b5_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzEzLTEyLTEtMS0yODgwNQ_d72312e9-b752-4d09-bc04-3e25eae452b1"
      unitRef="usd">8568000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i3c925d5554374d1da0be16bce2fc2da0_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzE0LTItMS0xLTI4ODA1_47e2b0f2-c2b7-4967-8897-af2cbda69372"
      unitRef="usd">6112000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense
      contextRef="icfc8e314ebfc49b191e6b222139a7a1a_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzE0LTQtMS0xLTI4ODA1_b11a19b0-5c7e-4757-aa23-6c23e0b5de07"
      unitRef="usd">1200000</us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense>
    <us-gaap:ValuationAllowancesAndReservesDeductions
      contextRef="icfc8e314ebfc49b191e6b222139a7a1a_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzE0LTgtMS0xLTI4ODA1_140822e5-0c3b-413c-9239-2cb6288ffa6d"
      unitRef="usd">0</us-gaap:ValuationAllowancesAndReservesDeductions>
    <us-gaap:ValuationAllowancesAndReservesAdjustments
      contextRef="icfc8e314ebfc49b191e6b222139a7a1a_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzE0LTEwLTEtMS0yODgwNQ_35316abe-579c-45fe-8b4d-0b2d5abf7a20"
      unitRef="usd">0</us-gaap:ValuationAllowancesAndReservesAdjustments>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i4b26a9dc49044a46bd0bf68ff53f08b8_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzE0LTEyLTEtMS0yODgwNQ_9cbb9592-6478-4c3c-8886-0f10e11a1f98"
      unitRef="usd">7312000</us-gaap:ValuationAllowancesAndReservesBalance>
    <dei:AuditorName
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDgvZnJhZzpkMjAzZmVkOWI1ZGM0ZmVmYWVkOGE1ZjU1YWRkMWJjOC90ZXh0cmVnaW9uOmQyMDNmZWQ5YjVkYzRmZWZhZWQ4YTVmNTVhZGQxYmM4XzEzMTk0MTM5NTQ0MTE1_75ec7183-af2a-4f7c-b1f2-e7b402574a8b">GRANT THORNTON LLP</dei:AuditorName>
    <dei:AuditorLocation
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDgvZnJhZzpkMjAzZmVkOWI1ZGM0ZmVmYWVkOGE1ZjU1YWRkMWJjOC90ZXh0cmVnaW9uOmQyMDNmZWQ5YjVkYzRmZWZhZWQ4YTVmNTVhZGQxYmM4XzEzMTk0MTM5NTQ0MTE2_10997c32-d9ee-4c47-932e-98930fdf04d9">Boston, Massachusetts</dei:AuditorLocation>
    <link:footnoteLink
      xlink:role="http://www.xbrl.org/2003/role/link"
      xlink:type="extended">
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMzMtMy0xLTEtMjg4MDU_ab258229-a966-4dc7-ba66-df0f23eaca58"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMzMtMy0xLTEtMjg4MDU_ab258229-a966-4dc7-ba66-df0f23eaca58"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMzMtNS0xLTEtMjg4MDU_2ff20d62-7c70-4e69-9921-9fc67e2b17c9"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMzMtNS0xLTEtMjg4MDU_2ff20d62-7c70-4e69-9921-9fc67e2b17c9"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMzMtMS0xLTEtMjg4MDU_12f79dfb-9a84-4a28-9cad-69258f40ed1d"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMzMtMS0xLTEtMjg4MDU_12f79dfb-9a84-4a28-9cad-69258f40ed1d"
          xlink:type="locator"/>
        <link:footnote id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMi0yLTEtMS0yODgwNQ_0a565fe2-0209-47ac-8307-1c0640619f21" xlink:label="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMi0yLTEtMS0yODgwNQ_0a565fe2-0209-47ac-8307-1c0640619f21" xlink:role="http://www.xbrl.org/2003/role/footnote" xlink:type="resource" xml:lang="en-US">170,820&#160;</link:footnote>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMzMtMy0xLTEtMjg4MDU_ab258229-a966-4dc7-ba66-df0f23eaca58"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMi0yLTEtMS0yODgwNQ_0a565fe2-0209-47ac-8307-1c0640619f21"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMzMtNS0xLTEtMjg4MDU_2ff20d62-7c70-4e69-9921-9fc67e2b17c9"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMi0yLTEtMS0yODgwNQ_0a565fe2-0209-47ac-8307-1c0640619f21"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMzMtMS0xLTEtMjg4MDU_12f79dfb-9a84-4a28-9cad-69258f40ed1d"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMi0yLTEtMS0yODgwNQ_0a565fe2-0209-47ac-8307-1c0640619f21"
          xlink:type="arc"/>
    </link:footnoteLink>
</xbrl>
