<?xml version="1.0" encoding="utf-8"?>
<xbrl
  xml:lang="en-US"
  xmlns="http://www.xbrl.org/2003/instance"
  xmlns:country="http://xbrl.sec.gov/country/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:pubm="http://pubmatic.com/20211231"
  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="pubm-20211231.xsd" xlink:type="simple"/>
    <context id="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i5ff4f642ca1f44f89a5088e9a7733996_I20210630">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
        </entity>
        <period>
            <instant>2021-06-30</instant>
        </period>
    </context>
    <context id="i5a03efd238e04ba79d9f070e997a6c42_I20220131">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-01-31</instant>
        </period>
    </context>
    <context id="i60a8e7c4414d49c99717791f1cf338b2_I20220131">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassBMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-01-31</instant>
        </period>
    </context>
    <context id="if4e3cab5b2504483ac8517f68c50f1f2_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i492ac259620d4e07b331e135b937f8c0_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassBMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="iff0c3515085c49e984751bbe93607e09_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassBMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="id7fd9d2a49704cec8ca50ff9b30532a8_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ie868a74707f14b528719d6b0c12b0f79_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i5ae36a3071c94e09998a201189720959_I20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:ConvertiblePreferredStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="i1e08dc90aa7741d39cde0f9f3a5893ea_I20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">pubm:RedeemableCommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="i2dde7357395742d09f0547d96ecb53d4_I20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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="i940584f6edcb4d59ac207cfa94dda628_I20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="i69fc0504324c47c38cd9c7fae85c5d5a_I20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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="i44782f78fca44daf9567fcd3ad58400e_I20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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="i7e8096aa3e38469a8318e73f09bf2763_I20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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="ief144f96c0df4282b351b86950ec96f1_I20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="i17b61511a41a493da40a61d9907bcd60_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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="i15940aa8f9be44058374e6007aefd756_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:ConvertiblePreferredStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="if668cba99dc0497183d7aae15a60a86d_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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="idb910523221440ec9bcd996c25a740e8_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i4f8935a5717940f5a1506f306dc1547b_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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="i86cd5c5277bb4a198b7b97f2a3adacd4_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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="if732a43a49af4a1cb8448cb4b3b0224a_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:ConvertiblePreferredStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="ia997974a5b7d4adc8390f87994635ecd_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">pubm:RedeemableCommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i7285695688d04766a8faf12f3b818483_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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="ife0b3e7987494a9197059184d4242a4c_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="ie93d7c69fd3c4645b1c408887580dcc2_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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="ie8540f7f739341ef984015314ba9476e_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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="i5aebd644f837407eb50a305aa566be29_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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="ibcf318f535e34e548d6a7a49e392f2cd_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i8e0bb9516780415b95889a6632b5a021_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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="id5ba2181fb0b41ffa71b2bbfdf739db3_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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="i84c8b9e1882c4bc9b13b79ba285074b8_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="iac3b4cb5fe5840bb85dac9e8350b928a_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">pubm:RedeemableCommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i3775120fd4044723b5bbd3e84bf0762d_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:ConvertiblePreferredStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i6c702817391c42f3ae0e005a017d8763_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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="id18bae8b58ae4157949edbeeaeabd2c6_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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="ic328b481ff25493e9b8823efbaf6c256_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:ConvertiblePreferredStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i426f3917019242bba5c8de2ef285f3f1_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">pubm:RedeemableCommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i03e1d9770d564a329bb2adabf49fa5c9_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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="ic6e5ecc99ff04061b9e3f6c3ff14e5a2_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="ide4beba748fb40ed8851ccc252f80aeb_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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="i3cf506065bd2432495cd72f1681a8bea_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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="ib94b8ea9d39d475c9dad96d49ef7cf59_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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="ie9d11e1b40894b1b9ed30a2e657b70ff_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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="i62771c254e184b3ea5a42172b0543918_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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="i9be2d4032f0f4327bb5a0fee4841a0a7_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="ice57f3cdf46a49d0b6f078da8795e3f9_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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="i968ada8404934754a6e8e6daa7ca33ac_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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="ic55d841236bf4456a75c941c3e194d40_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:ConvertiblePreferredStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ib7535507430d48df8aa490383b4d3e70_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">pubm:RedeemableCommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i4f8f7aafe3cc49408c12ee459f52493f_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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="i303aef9a74cc46c190bf5fa09f3bb56e_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i4099a42f17b14e0f84dcd918e82899bc_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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="ifb72d74f7fd84986a60c11ce0f2dcc44_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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="ie0deafe6cb7042a1bbb4dac963ee71e6_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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="i56c168af30d24e31aff21803350f12b4_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:SoftwareDevelopmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="ibc849488a360414797b2be4e90da711d_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:SoftwareDevelopmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i565a16b0427148ccae8d34eb22d64e30_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:MajorCustomersAxis">pubm:OnePublisherMember</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>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="id0892fecf3814bb88491cf665d681857_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:MajorCustomersAxis">pubm:OnePublisherMember</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="i478dd767c5d443c99f2860c7aea05948_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:MajorCustomersAxis">pubm:OnePublisherMember</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="ib3c8a0213f404cb98274b92f5c5e5bc4_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:MajorCustomersAxis">pubm:BuyerOneMember</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="i1cc6e45f3a9b4d45b063af9e5809c964_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:MajorCustomersAxis">pubm:BuyerTwoMember</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="i6b9e0e24b01e43e1acebedfd4cc599b6_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:MajorCustomersAxis">pubm:BuyerOneMember</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="i944ea994181f47be99d94e80c793de84_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:MajorCustomersAxis">pubm:BuyerTwoMember</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="iea211fbe61704e69af45a1b753934f2f_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:MajorCustomersAxis">pubm:BuyerThreeMember</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="i1621098111f24a3091fab6338a1fba8f_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:MajorCustomersAxis">pubm:BuyerFourMember</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="i3aabb66a84db411d8293407b434a6f44_I20210101">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
        </entity>
        <period>
            <instant>2021-01-01</instant>
        </period>
    </context>
    <context id="ia637ba01ca1b4ca3814b34d96cb20958_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember>
                <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="i547a1b29d33d45e5b14647f2b5e7f390_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember>
                <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="if7aae0d1c66d4e4eaedbaa791e45427a_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember>
                <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="ic2bb03115a4a47d696ed953f2132d7d0_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:MoneyMarketFundsMember</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="ia03f0e6b901943e5bcdd7772c1f61d92_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:CertificatesOfDepositMember</xbrldi:explicitMember>
                <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="i44cd23d5caa347d39f03d64051dc8ddb_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:CertificatesOfDepositMember</xbrldi:explicitMember>
                <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="i80e7170a6bfe415aab120022e9d12c27_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:CertificatesOfDepositMember</xbrldi:explicitMember>
                <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="id502e731d7c343539cba3acdd858f01d_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:CertificatesOfDepositMember</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="ib2132eb60fa4401cb3d4c2d60924f8ea_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:CashEquivalentsMember</xbrldi:explicitMember>
                <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="i958cf2c0f0554d90b57c5a0f3f4d96f6_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:CashEquivalentsMember</xbrldi:explicitMember>
                <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="i2574c958d13b403681f85b14a944fd8f_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:CashEquivalentsMember</xbrldi:explicitMember>
                <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="i3c5089ed58a94e05ad84115b277cc2e2_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:CashEquivalentsMember</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="i3048cf46417546f58610106a7bbec1f7_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CommercialPaperMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="if41d873f10394aa09a031a9ebd409ee7_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CommercialPaperMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i5c2bc37215214e65b0f833439b594161_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel3Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CommercialPaperMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i7c38e7c03bad4ce3a114a626610df57f_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CommercialPaperMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ib6969a77a50d491880c0ef6c860c6a14_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USTreasuryAndGovernmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i4b98c704f0f347ab9c2a695bbb2db812_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USTreasuryAndGovernmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i5e68b133584145da98753509deddf0d7_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel3Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USTreasuryAndGovernmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="id40887e99b9a47d49a50be9692016979_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USTreasuryAndGovernmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i2791467b6caf4d0ba57f185db1cea11c_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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="iae1ba3ef21ca4e3fbd1c01ee6d5f1a29_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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="i0f72b3405815447683b09fae3c356a60_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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="i513fc5801e4e4f1e997c9751c5609f89_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i9a850352caab480784e36855e124e597_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember>
                <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>2020-12-31</instant>
        </period>
    </context>
    <context id="ia14085a1c9c744bf94fe2c59f3c5c2f8_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember>
                <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>2020-12-31</instant>
        </period>
    </context>
    <context id="i5ef2fb73385544bf845dedb1c193ddbf_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember>
                <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>2020-12-31</instant>
        </period>
    </context>
    <context id="i40cd4af0b0394beb9ee543d82b98604b_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i160a502810a94db89b22d4e027f7adb7_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:CertificatesOfDepositMember</xbrldi:explicitMember>
                <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>2020-12-31</instant>
        </period>
    </context>
    <context id="if009a6291e634740aa3a05a26e2d9bd8_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:CertificatesOfDepositMember</xbrldi:explicitMember>
                <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>2020-12-31</instant>
        </period>
    </context>
    <context id="i1e4059043e38496093b715533194b0a7_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:CertificatesOfDepositMember</xbrldi:explicitMember>
                <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>2020-12-31</instant>
        </period>
    </context>
    <context id="i170517e1a29a4729911136259af0884f_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:CertificatesOfDepositMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="iac98b3e2c43743e3a521b36308670642_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:CashEquivalentsMember</xbrldi:explicitMember>
                <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>2020-12-31</instant>
        </period>
    </context>
    <context id="i7a888e2c6ca0480f86604c8b69bb71e3_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:CashEquivalentsMember</xbrldi:explicitMember>
                <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>2020-12-31</instant>
        </period>
    </context>
    <context id="if066cd4982aa4bc4bd50f27136a0a29c_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:CashEquivalentsMember</xbrldi:explicitMember>
                <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>2020-12-31</instant>
        </period>
    </context>
    <context id="ic0fe912d85ad447190a4fcd46be26f4f_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:CashEquivalentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i2bdcea0ea0594790accf906db310ce67_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CommercialPaperMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="if97642a43acd451fbf53f217b621532e_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CommercialPaperMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i2fa624018dda41b3bc58b18041c66801_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel3Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CommercialPaperMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i7b548adb13a640d9af2b07dd55e94c8f_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CommercialPaperMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="ia9aa9810f64a40478ec00c1fb76b3241_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USTreasuryAndGovernmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="ib549e69233c7457eb58a308a107bdc9a_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USTreasuryAndGovernmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="ic1a587ea583e405485402f7c45c5cd82_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel3Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USTreasuryAndGovernmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i02cb25b5a4bf488a9ce3a0b417ea3b1b_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USTreasuryAndGovernmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i5aae89afa7d04685ad4775aa93b1ad74_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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>2020-12-31</instant>
        </period>
    </context>
    <context id="i56312a22ca3b4242b09fcd9c57f04c2a_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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>2020-12-31</instant>
        </period>
    </context>
    <context id="i796b7759cb6d4b08975b8a8c6a44f5d4_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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>2020-12-31</instant>
        </period>
    </context>
    <context id="i219a297fa68b4c978cfde42641d9d813_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i29be720ae26f4a8a8ea0ad7848dd9f61_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CommercialPaperMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ie58014ce0a3d41cfb716c9803b95943b_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USTreasuryAndGovernmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i5b519d38ba6f46f58801bdfb86914877_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CommercialPaperMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i1db67ff3499b45678a4dcf64727f5caf_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USTreasuryAndGovernmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i40e8e0cdaf6d4688a6e46b8659c27c58_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:SoftwareDevelopmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ia7de109ecbbe4350b15abb00600ac8ff_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:SoftwareDevelopmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i1c2b1b3df0bb4906a55a8a8d6b87f287_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:TechnologyEquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ic98d76631c9d45c2976c3cf3301c4360_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:TechnologyEquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i5dfb88b3fd184c9cba6e598f3685ef92_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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="i5c4e1345c44b46608fcd8fb0dfaa894f_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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="ibeae8680824f4ca689a36fa3b0a0c5e7_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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="i63b9eede794c4445ab1c2d5e0cb98d35_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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="i45a1cb1173ef4cbb909ff75583569e2f_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:SoftwareDevelopmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="ia708ef2a2b644fbe96669566ca411fb8_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:SoftwareDevelopmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i260d900ac9094189af2917563b480e23_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:SoftwareDevelopmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="if1fe45bf7b28427a971bb786209b01f2_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">us-gaap:RevolvingCreditFacilityMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:LineOfCreditFacilityAxis">pubm:SiliconValleyBankMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i633c9da7b7dd4bf0b636ba82cabe4f5d_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">us-gaap:RevolvingCreditFacilityMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:LineOfCreditFacilityAxis">pubm:SiliconValleyBankMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i3ad4d0188ce94bf89bd5d5a0d33ece92_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">us-gaap:RevolvingCreditFacilityMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:LineOfCreditFacilityAxis">pubm:SiliconValleyBankMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i3ff0590ef9ef4a3b91c6b2abfd262564_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ib468b00cf8b24a40a7421d89b33ebd2d_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="idc26181cf8f041a78b18b2a539b585e8_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:OfficeEquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="id46d1e9d50d347ea9b1dff9fd0e1e059_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">pubm:IrrevocableLettersOfCreditDueJuly2028Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i022040b79b2c45dd8a2b77f880d69ff3_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">pubm:IrrevocableLettersOfCreditDueJune2022Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i768740fa8e9e45cb866898c76981f7d4_I20201211">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassBMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-11</instant>
        </period>
    </context>
    <context id="i92fc24f8f61b4c3d97c561abeb422958_I20201211">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:ConvertiblePreferredStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-11</instant>
        </period>
    </context>
    <context id="ifd205622407447fca897de8cc9fbd3d1_I20201211">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
        </entity>
        <period>
            <instant>2020-12-11</instant>
        </period>
    </context>
    <context id="i1d9f032c80424bb0b45ab5dbdc613c97_I20180831">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">pubm:TwoPointFourTwoPercentPromissoryNotesDueAugust2021Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:LongtermDebtTypeAxis">us-gaap:NotesPayableOtherPayablesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-08-31</instant>
        </period>
    </context>
    <context id="if218731f60614a379303b07c61dd75a7_I20180831">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
        </entity>
        <period>
            <instant>2018-08-31</instant>
        </period>
    </context>
    <context id="ib8677d97bc8b4ef4bed42c3ef9d64a50_D20180801-20180831">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
        </entity>
        <period>
            <startDate>2018-08-01</startDate>
            <endDate>2018-08-31</endDate>
        </period>
    </context>
    <context id="ib4610e6e711f407ea37e1506e595433e_I20200930">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">pubm:RedeemableCommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-09-30</instant>
        </period>
    </context>
    <context id="i633c4010f8de447c8d30d2eecf26be19_I20201211">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-11</instant>
        </period>
    </context>
    <context id="i35a1b87bd9de427c846029f06ee42bfd_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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="ic9acf74eb8e548489f2a51697d6061d9_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="ie042b9543011413cb405365095639eef_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i34755aab8f4f44a1b59362d35a9ef929_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="ib60a38e57015478f822f054e05dd0719_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="iacc2aad7e09849ae9f2e0d89d77f8ab0_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i0b66cbf81e38465893de94b4135c1750_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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="ia51fa6a8ef654a7ab33c434839ac4672_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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="ic26be68663fa4f76a84dfa4eb49f52a4_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i26e4b639031b4dc994f98b20eea06faa_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i69e5232373904681afe4be9e967362fc_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="ic47e9371f7d445cca5d30aab9d58dc6e_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="ieea9e46b28e94f03aed2c4c0c0457de2_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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="iffe4f59243cc494ab52af301a365a9e4_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockUnitsRSUMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i5a8f1a4a822d4961b5121cfe6d89ed62_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockUnitsRSUMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i47c5281d03a84e638a15953399427b1a_I20201130">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-11-30</instant>
        </period>
    </context>
    <context id="ibe7c988795e54ebc99d0d77658da4511_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="id354deed4e6d411ea3d75ac85b10b9bc_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i7516369d10994577bb5e9d71912decec_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i2a948743a6714d1c925a161361294e76_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i7cb0c2ef25cd44c8893ca84ca5547591_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">pubm:ESPPMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i737ee286bf8945b8ac391ae2f61da4d0_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">pubm:ESPPMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i8d7060f55e064e2881596922b6b9025a_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">pubm:ESPPMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i21441d926ad94233ad4f780fd3ce9f11_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:CostOfSalesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="ib0d33444dd244058ac1f80208af39493_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:CostOfSalesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="if0c82b86a7f04fbbb93d898360a45284_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:CostOfSalesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i19493e3eb60a411481917db58cc47b24_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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="ib15f4438376d48f4b94880bccc189625_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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="i5c92439136b54f3a9f4b2575dfd79315_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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="ic29a3cc12a264df6862c7c04a5c04a4b_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:SellingAndMarketingExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i3871800729464bbfbc2ed620e016a6ce_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:SellingAndMarketingExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i82416838b4a04907a8dd08046627ea5d_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:SellingAndMarketingExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="ifea4118697f2484aaee01b80548be496_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:GeneralAndAdministrativeExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i79e6023c06e0435b8ab85b7b9116b88e_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:GeneralAndAdministrativeExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i3a85840dceb9409d9e696313b4d39aa1_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:GeneralAndAdministrativeExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="ibb4f974f21b8450ca0899aa56aac0a0b_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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="i1311cc55079347d6b7db3c9be8aba165_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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="ibeeda28b82544d77b42fdd9bd9235b2c_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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="i7007b5e81e864d2297262baf52f92e83_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis">us-gaap:ConvertiblePreferredStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i81b57a065a16438b9c5e306c0f8ba67d_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis">us-gaap:ConvertiblePreferredStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i3a5c13c4c9254335b625198ed45b0931_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis">us-gaap:ConvertiblePreferredStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="ia9e05416c0524db5ace64c3b28a6666d_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:StateAndLocalJurisdictionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ief5728a3af07465f901e1dea1842c397_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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="i28cb752911f744eea288b686b76a6910_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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="i45c32997023f4d42bf75b9b03118553d_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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="i74e446b31db2496681bbfdd6fa36abd3_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</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="i77566dca1dbc4edeb5cb5bca1d88614f_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">us-gaap:EMEAMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i44fefc4c4185424eba708442f2f5f00e_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">us-gaap:EMEAMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="ie281fb59cb6d479fb180e996b1710705_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">us-gaap:EMEAMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i49b4abb7862146a19588e1f648987c34_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:AsiaPacificMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="ib71f94f25ecd47b18e4e84bd2c3ea13a_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:AsiaPacificMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i5527b3c2853e44d7b1f3ade11a938966_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:AsiaPacificMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="ia7cb367ca76448e88583727bc8bb5d13_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">pubm:RestOfTheWorldMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i00f6d520882b4c328b1c0eeba52a3124_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">pubm:RestOfTheWorldMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="id7143e63a0694563b020be78c5605502_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">pubm:RestOfTheWorldMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i6b959048adc1413cb57d963d25a126f0_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i92c18c22baed4f6b9da11c98b682d799_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i7e077bb817944a919349fb346daba2f9_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">pubm:RestOfTheWorldMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i71f984d0d11842aa945aa29e41ec9f57_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001422930</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">pubm:RestOfTheWorldMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </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>
    <dei:AmendmentFlag
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NzMvZnJhZzpjNTZlMjBiMzY2YmY0MDc3ODM0ZjBhOGQ2M2ZjZTZlZS90YWJsZTpjMTU5NzMyOWMxOTU0NmI2YmJiOTRlOWM3NDE4MGVkYy90YWJsZXJhbmdlOmMxNTk3MzI5YzE5NTQ2YjZiYmI5NGU5Yzc0MTgwZWRjXzEtMS0xLTEtMjg2MDQ_fc25cbf7-a9cf-405f-a3b7-35f1b71106b8">false</dei:AmendmentFlag>
    <dei:EntityCentralIndexKey
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NzMvZnJhZzpjNTZlMjBiMzY2YmY0MDc3ODM0ZjBhOGQ2M2ZjZTZlZS90YWJsZTpjMTU5NzMyOWMxOTU0NmI2YmJiOTRlOWM3NDE4MGVkYy90YWJsZXJhbmdlOmMxNTk3MzI5YzE5NTQ2YjZiYmI5NGU5Yzc0MTgwZWRjXzItMS0xLTEtMjg2MDc_a507168d-5866-495d-8efb-216d6234aa05">0001422930</dei:EntityCentralIndexKey>
    <dei:DocumentFiscalYearFocus
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NzMvZnJhZzpjNTZlMjBiMzY2YmY0MDc3ODM0ZjBhOGQ2M2ZjZTZlZS90YWJsZTpjMTU5NzMyOWMxOTU0NmI2YmJiOTRlOWM3NDE4MGVkYy90YWJsZXJhbmdlOmMxNTk3MzI5YzE5NTQ2YjZiYmI5NGU5Yzc0MTgwZWRjXzQtMS0xLTEtMjg2MTE_788036aa-5f07-4f5d-91c7-6b1d283e40fd">2021</dei:DocumentFiscalYearFocus>
    <dei:DocumentFiscalPeriodFocus
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NzMvZnJhZzpjNTZlMjBiMzY2YmY0MDc3ODM0ZjBhOGQ2M2ZjZTZlZS90YWJsZTpjMTU5NzMyOWMxOTU0NmI2YmJiOTRlOWM3NDE4MGVkYy90YWJsZXJhbmdlOmMxNTk3MzI5YzE5NTQ2YjZiYmI5NGU5Yzc0MTgwZWRjXzUtMS0xLTEtMjg2MTY_594594d8-ee5b-49a2-bd93-94c2a91b4544">FY</dei:DocumentFiscalPeriodFocus>
    <dei:EntityAddressAddressLine1
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NzMvZnJhZzpjNTZlMjBiMzY2YmY0MDc3ODM0ZjBhOGQ2M2ZjZTZlZS90YWJsZTpjMTU5NzMyOWMxOTU0NmI2YmJiOTRlOWM3NDE4MGVkYy90YWJsZXJhbmdlOmMxNTk3MzI5YzE5NTQ2YjZiYmI5NGU5Yzc0MTgwZWRjXzYtMS0xLTEtNDIwMzI_156d1795-5c64-4ff0-8ce3-61a4dcda4e51">3 Lagoon Drive</dei:EntityAddressAddressLine1>
    <dei:EntityAddressAddressLine2
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NzMvZnJhZzpjNTZlMjBiMzY2YmY0MDc3ODM0ZjBhOGQ2M2ZjZTZlZS90YWJsZTpjMTU5NzMyOWMxOTU0NmI2YmJiOTRlOWM3NDE4MGVkYy90YWJsZXJhbmdlOmMxNTk3MzI5YzE5NTQ2YjZiYmI5NGU5Yzc0MTgwZWRjXzctMS0xLTEtNDIwMzI_692e3641-7e83-43dc-93ef-eb0170a25b55">Suite 180</dei:EntityAddressAddressLine2>
    <dei:EntityAddressCityOrTown
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NzMvZnJhZzpjNTZlMjBiMzY2YmY0MDc3ODM0ZjBhOGQ2M2ZjZTZlZS90YWJsZTpjMTU5NzMyOWMxOTU0NmI2YmJiOTRlOWM3NDE4MGVkYy90YWJsZXJhbmdlOmMxNTk3MzI5YzE5NTQ2YjZiYmI5NGU5Yzc0MTgwZWRjXzgtMS0xLTEtNDIwMzI_6bcc8c60-a364-4c23-b14a-317db22c544c">Redwood City</dei:EntityAddressCityOrTown>
    <dei:EntityAddressStateOrProvince
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NzMvZnJhZzpjNTZlMjBiMzY2YmY0MDc3ODM0ZjBhOGQ2M2ZjZTZlZS90YWJsZTpjMTU5NzMyOWMxOTU0NmI2YmJiOTRlOWM3NDE4MGVkYy90YWJsZXJhbmdlOmMxNTk3MzI5YzE5NTQ2YjZiYmI5NGU5Yzc0MTgwZWRjXzktMS0xLTEtNDIwMzI_f14af44e-a368-420b-a3f2-3e348ad972a8">CA</dei:EntityAddressStateOrProvince>
    <dei:EntityAddressPostalZipCode
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NzMvZnJhZzpjNTZlMjBiMzY2YmY0MDc3ODM0ZjBhOGQ2M2ZjZTZlZS90YWJsZTpjMTU5NzMyOWMxOTU0NmI2YmJiOTRlOWM3NDE4MGVkYy90YWJsZXJhbmdlOmMxNTk3MzI5YzE5NTQ2YjZiYmI5NGU5Yzc0MTgwZWRjXzEwLTEtMS0xLTQyMDMy_a2f03acf-590f-471d-90b3-e484daf1abe2">94065</dei:EntityAddressPostalZipCode>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i56c168af30d24e31aff21803350f12b4_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90ZXh0cmVnaW9uOjJlYzdmZDRmY2M5ZDRlNThiMWU5NjQ5YmE5ZmM0Y2UzXzEwOTk1MTE3MjQ3MTE_553e6439-f5e8-4552-9592-20ef34d0c37d">P2Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FinanceLeaseRightOfUseAssetStatementOfFinancialPositionExtensibleList
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTplZDExYTJmN2FlZWQ0NTU1ODJmNzUyZmFhYmNjYjc3ZC90YWJsZXJhbmdlOmVkMTFhMmY3YWVlZDQ1NTU4MmY3NTJmYWFiY2NiNzdkXzExLTAtMS0xLTM2ODIw_a28e4118-b508-44e8-98fe-f9980d536268">http://fasb.org/us-gaap/2021-01-31#PropertyPlantAndEquipmentNet</us-gaap:FinanceLeaseRightOfUseAssetStatementOfFinancialPositionExtensibleList>
    <us-gaap:FinanceLeaseRightOfUseAssetStatementOfFinancialPositionExtensibleList
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTplZDExYTJmN2FlZWQ0NTU1ODJmNzUyZmFhYmNjYjc3ZC90YWJsZXJhbmdlOmVkMTFhMmY3YWVlZDQ1NTU4MmY3NTJmYWFiY2NiNzdkXzExLTAtMS0xLTM2ODIw_f8d94a1f-84c6-4e59-94df-0ff8d68ad1ca">http://fasb.org/us-gaap/2021-01-31#PropertyPlantAndEquipmentNet</us-gaap:FinanceLeaseRightOfUseAssetStatementOfFinancialPositionExtensibleList>
    <us-gaap:FinanceLeaseLiabilityStatementOfFinancialPositionExtensibleList
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTplZDExYTJmN2FlZWQ0NTU1ODJmNzUyZmFhYmNjYjc3ZC90YWJsZXJhbmdlOmVkMTFhMmY3YWVlZDQ1NTU4MmY3NTJmYWFiY2NiNzdkXzE1LTAtMS0xLTM2ODM2_22026826-4dd6-4ff6-9f7e-550a7a08b1ad">http://fasb.org/us-gaap/2021-01-31#Liabilities</us-gaap:FinanceLeaseLiabilityStatementOfFinancialPositionExtensibleList>
    <us-gaap:FinanceLeaseLiabilityStatementOfFinancialPositionExtensibleList
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTplZDExYTJmN2FlZWQ0NTU1ODJmNzUyZmFhYmNjYjc3ZC90YWJsZXJhbmdlOmVkMTFhMmY3YWVlZDQ1NTU4MmY3NTJmYWFiY2NiNzdkXzE1LTAtMS0xLTM2ODM2_c0ef8b58-57da-408c-809e-ac790c4d5af4">http://fasb.org/us-gaap/2021-01-31#Liabilities</us-gaap:FinanceLeaseLiabilityStatementOfFinancialPositionExtensibleList>
    <dei:DocumentType
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xL2ZyYWc6OTI3MzcxMmVjOWU2NGJhMmI0YjAxMDFhNGNiNjI5OGIvdGV4dHJlZ2lvbjo5MjczNzEyZWM5ZTY0YmEyYjRiMDEwMWE0Y2I2Mjk4Yl80MTY5_4e47ac72-328e-462b-bb8c-d435a424b490">10-K</dei:DocumentType>
    <dei:DocumentAnnualReport
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xL2ZyYWc6OTI3MzcxMmVjOWU2NGJhMmI0YjAxMDFhNGNiNjI5OGIvdGV4dHJlZ2lvbjo5MjczNzEyZWM5ZTY0YmEyYjRiMDEwMWE0Y2I2Mjk4Yl80MTcy_b38f8d12-a3f1-403e-826a-ddf71f04fb0d">true</dei:DocumentAnnualReport>
    <dei:DocumentPeriodEndDate
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xL2ZyYWc6OTI3MzcxMmVjOWU2NGJhMmI0YjAxMDFhNGNiNjI5OGIvdGV4dHJlZ2lvbjo5MjczNzEyZWM5ZTY0YmEyYjRiMDEwMWE0Y2I2Mjk4Yl8yMTY_bb092dd2-08ee-40e6-a02c-f62456e3cc68">2021-12-31</dei:DocumentPeriodEndDate>
    <dei:CurrentFiscalYearEndDate
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xL2ZyYWc6OTI3MzcxMmVjOWU2NGJhMmI0YjAxMDFhNGNiNjI5OGIvdGV4dHJlZ2lvbjo5MjczNzEyZWM5ZTY0YmEyYjRiMDEwMWE0Y2I2Mjk4Yl8yMTY_d01a2827-fc6b-41fa-bb9e-8651e0346c8b">--12-31</dei:CurrentFiscalYearEndDate>
    <dei:DocumentTransitionReport
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xL2ZyYWc6OTI3MzcxMmVjOWU2NGJhMmI0YjAxMDFhNGNiNjI5OGIvdGV4dHJlZ2lvbjo5MjczNzEyZWM5ZTY0YmEyYjRiMDEwMWE0Y2I2Mjk4Yl80MTY3_736f3d13-5853-4f3b-9e47-43521d8d22fe">false</dei:DocumentTransitionReport>
    <dei:EntityFileNumber
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xL2ZyYWc6OTI3MzcxMmVjOWU2NGJhMmI0YjAxMDFhNGNiNjI5OGIvdGV4dHJlZ2lvbjo5MjczNzEyZWM5ZTY0YmEyYjRiMDEwMWE0Y2I2Mjk4Yl80MTc3_a391ff2d-0550-4439-8067-f2ef3e837c2c">001-39748</dei:EntityFileNumber>
    <dei:EntityRegistrantName
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xL2ZyYWc6OTI3MzcxMmVjOWU2NGJhMmI0YjAxMDFhNGNiNjI5OGIvdGV4dHJlZ2lvbjo5MjczNzEyZWM5ZTY0YmEyYjRiMDEwMWE0Y2I2Mjk4Yl80MTU3_311566ed-9131-42e4-9d9b-542d8addca21">PubMatic, Inc.</dei:EntityRegistrantName>
    <dei:EntityIncorporationStateCountryCode
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xL2ZyYWc6OTI3MzcxMmVjOWU2NGJhMmI0YjAxMDFhNGNiNjI5OGIvdGFibGU6YTNhMzY3YWYyNTYyNDRhMGI1ZWY2YzFhM2YyNzE3ZTMvdGFibGVyYW5nZTphM2EzNjdhZjI1NjI0NGEwYjVlZjZjMWEzZjI3MTdlM18wLTAtMS0xLTI4MTA1_dc8f7be6-cd57-469c-b856-0b06e963b853">DE</dei:EntityIncorporationStateCountryCode>
    <dei:EntityTaxIdentificationNumber
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xL2ZyYWc6OTI3MzcxMmVjOWU2NGJhMmI0YjAxMDFhNGNiNjI5OGIvdGFibGU6YTNhMzY3YWYyNTYyNDRhMGI1ZWY2YzFhM2YyNzE3ZTMvdGFibGVyYW5nZTphM2EzNjdhZjI1NjI0NGEwYjVlZjZjMWEzZjI3MTdlM18wLTEtMS0xLTI4MTA1_de1200ca-3e21-40c8-bec6-912bce76c24f">20-5863224</dei:EntityTaxIdentificationNumber>
    <dei:Security12bTitle
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xL2ZyYWc6OTI3MzcxMmVjOWU2NGJhMmI0YjAxMDFhNGNiNjI5OGIvdGFibGU6MmVlNzE2MGNlYzIyNGQwNGE4YzA3YmYxMWJkNzk3NGUvdGFibGVyYW5nZToyZWU3MTYwY2VjMjI0ZDA0YThjMDdiZjExYmQ3OTc0ZV8xLTAtMS0xLTI4MTA1_ca6fc4b5-692a-4d35-859a-0e7b07a8438b">Class A common stock, $0.0001 par value per share</dei:Security12bTitle>
    <dei:TradingSymbol
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xL2ZyYWc6OTI3MzcxMmVjOWU2NGJhMmI0YjAxMDFhNGNiNjI5OGIvdGFibGU6MmVlNzE2MGNlYzIyNGQwNGE4YzA3YmYxMWJkNzk3NGUvdGFibGVyYW5nZToyZWU3MTYwY2VjMjI0ZDA0YThjMDdiZjExYmQ3OTc0ZV8xLTEtMS0xLTI4MTA1_2145987a-6909-4e70-bc90-a177b2c4f564">PUBM</dei:TradingSymbol>
    <dei:SecurityExchangeName
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xL2ZyYWc6OTI3MzcxMmVjOWU2NGJhMmI0YjAxMDFhNGNiNjI5OGIvdGFibGU6MmVlNzE2MGNlYzIyNGQwNGE4YzA3YmYxMWJkNzk3NGUvdGFibGVyYW5nZToyZWU3MTYwY2VjMjI0ZDA0YThjMDdiZjExYmQ3OTc0ZV8xLTItMS0xLTI4MTA1_225b710a-8367-4b80-b1c1-1727b362193a">NASDAQ</dei:SecurityExchangeName>
    <dei:EntityWellKnownSeasonedIssuer
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xL2ZyYWc6OTI3MzcxMmVjOWU2NGJhMmI0YjAxMDFhNGNiNjI5OGIvdGV4dHJlZ2lvbjo5MjczNzEyZWM5ZTY0YmEyYjRiMDEwMWE0Y2I2Mjk4Yl8xMDk5NTExNjMzNzIz_5b191cfa-0d91-44bb-b9c4-20d3ce05ddca">Yes</dei:EntityWellKnownSeasonedIssuer>
    <dei:EntityVoluntaryFilers
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xL2ZyYWc6OTI3MzcxMmVjOWU2NGJhMmI0YjAxMDFhNGNiNjI5OGIvdGV4dHJlZ2lvbjo5MjczNzEyZWM5ZTY0YmEyYjRiMDEwMWE0Y2I2Mjk4Yl80MTc0_b7855d10-bc03-46f6-8ffd-69b14dcc9757">No</dei:EntityVoluntaryFilers>
    <dei:EntityCurrentReportingStatus
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xL2ZyYWc6OTI3MzcxMmVjOWU2NGJhMmI0YjAxMDFhNGNiNjI5OGIvdGV4dHJlZ2lvbjo5MjczNzEyZWM5ZTY0YmEyYjRiMDEwMWE0Y2I2Mjk4Yl80MTgw_ea6b8942-74d5-493e-ad59-1c19991ca879">Yes</dei:EntityCurrentReportingStatus>
    <dei:EntityInteractiveDataCurrent
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xL2ZyYWc6OTI3MzcxMmVjOWU2NGJhMmI0YjAxMDFhNGNiNjI5OGIvdGV4dHJlZ2lvbjo5MjczNzEyZWM5ZTY0YmEyYjRiMDEwMWE0Y2I2Mjk4Yl8xNjQ5MjY3NDQ1ODYz_111b44fb-30a8-4294-ab56-98606047ec86">Yes</dei:EntityInteractiveDataCurrent>
    <dei:EntityFilerCategory
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xL2ZyYWc6OTI3MzcxMmVjOWU2NGJhMmI0YjAxMDFhNGNiNjI5OGIvdGFibGU6YTQ1YjhjNDZiNDE0NDgyZmE4NjAxN2Y4NGE5Y2QwNjUvdGFibGVyYW5nZTphNDViOGM0NmI0MTQ0ODJmYTg2MDE3Zjg0YTljZDA2NV8wLTAtMS0xLTQwOTMy_91902d18-dfd0-4e4a-b399-991aa0f8cdb2">Large Accelerated Filer</dei:EntityFilerCategory>
    <dei:EntitySmallBusiness
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xL2ZyYWc6OTI3MzcxMmVjOWU2NGJhMmI0YjAxMDFhNGNiNjI5OGIvdGFibGU6YTQ1YjhjNDZiNDE0NDgyZmE4NjAxN2Y4NGE5Y2QwNjUvdGFibGVyYW5nZTphNDViOGM0NmI0MTQ0ODJmYTg2MDE3Zjg0YTljZDA2NV8yLTUtMS0xLTQwNDU5_45cea62a-f88d-436d-b1e7-ea78ad092bc1">false</dei:EntitySmallBusiness>
    <dei:EntityEmergingGrowthCompany
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xL2ZyYWc6OTI3MzcxMmVjOWU2NGJhMmI0YjAxMDFhNGNiNjI5OGIvdGFibGU6YTQ1YjhjNDZiNDE0NDgyZmE4NjAxN2Y4NGE5Y2QwNjUvdGFibGVyYW5nZTphNDViOGM0NmI0MTQ0ODJmYTg2MDE3Zjg0YTljZDA2NV80LTUtMS0xLTQwNDY3_fc5c41ad-d72b-40c7-992c-8970b79d999e">false</dei:EntityEmergingGrowthCompany>
    <dei:IcfrAuditorAttestationFlag
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xL2ZyYWc6OTI3MzcxMmVjOWU2NGJhMmI0YjAxMDFhNGNiNjI5OGIvdGV4dHJlZ2lvbjo5MjczNzEyZWM5ZTY0YmEyYjRiMDEwMWE0Y2I2Mjk4Yl8xNjQ5MjY3NDQ1ODY0_6ccb91dd-6b79-4c32-ba52-0970c74e4fe3">true</dei:IcfrAuditorAttestationFlag>
    <dei:EntityShellCompany
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xL2ZyYWc6OTI3MzcxMmVjOWU2NGJhMmI0YjAxMDFhNGNiNjI5OGIvdGV4dHJlZ2lvbjo5MjczNzEyZWM5ZTY0YmEyYjRiMDEwMWE0Y2I2Mjk4Yl80MTgx_808d4233-ffce-4d5f-873f-697e4a743981">false</dei:EntityShellCompany>
    <dei:EntityPublicFloat
      contextRef="i5ff4f642ca1f44f89a5088e9a7733996_I20210630"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xL2ZyYWc6OTI3MzcxMmVjOWU2NGJhMmI0YjAxMDFhNGNiNjI5OGIvdGV4dHJlZ2lvbjo5MjczNzEyZWM5ZTY0YmEyYjRiMDEwMWE0Y2I2Mjk4Yl8xMDk5NTExNjMzNjMx_12ec4bec-170f-44dd-9e31-9294103c9fc8"
      unitRef="usd">975900000</dei:EntityPublicFloat>
    <dei:EntityCommonStockSharesOutstanding
      contextRef="i5a03efd238e04ba79d9f070e997a6c42_I20220131"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xL2ZyYWc6OTI3MzcxMmVjOWU2NGJhMmI0YjAxMDFhNGNiNjI5OGIvdGV4dHJlZ2lvbjo5MjczNzEyZWM5ZTY0YmEyYjRiMDEwMWE0Y2I2Mjk4Yl81NDk3NTU4MTQ0ODAz_8ce89076-233d-48c4-892c-3465fb528041"
      unitRef="shares">40775004</dei:EntityCommonStockSharesOutstanding>
    <dei:EntityCommonStockSharesOutstanding
      contextRef="i60a8e7c4414d49c99717791f1cf338b2_I20220131"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xL2ZyYWc6OTI3MzcxMmVjOWU2NGJhMmI0YjAxMDFhNGNiNjI5OGIvdGV4dHJlZ2lvbjo5MjczNzEyZWM5ZTY0YmEyYjRiMDEwMWE0Y2I2Mjk4Yl81NDk3NTU4MTQ0Nzkw_ad8dfd72-917a-469d-8179-de5381d4f59b"
      unitRef="shares">11098925</dei:EntityCommonStockSharesOutstanding>
    <dei:DocumentsIncorporatedByReferenceTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xL2ZyYWc6OTI3MzcxMmVjOWU2NGJhMmI0YjAxMDFhNGNiNjI5OGIvdGV4dHJlZ2lvbjo5MjczNzEyZWM5ZTY0YmEyYjRiMDEwMWE0Y2I2Mjk4Yl8xNjQ5MjY3NDQ1ODY1_6d325292-1886-4325-8734-0cfa67ddbbff">Portions of the registrant&#x2019;s proxy statement for its 2022 annual meeting of stockholders are incorporated herein by reference in Part III of this Annual Report on Form 10-K to the extent stated herein. Such proxy statement will be filed with the Securities and Exchange Commission within 120 days of the registrant&#x2019;s fiscal year ended December 31, 2021.</dei:DocumentsIncorporatedByReferenceTextBlock>
    <dei:AuditorFirmId
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl83Ni9mcmFnOjE2OGY4NmZiN2YzYjQ5MzY4ODRhYjdkMmQ1ZDU2YmIyL3RhYmxlOmU5ZGZlYzRhNWE2ZDQxZTE4MDU5Y2YzMDA4ZjNmN2Q3L3RhYmxlcmFuZ2U6ZTlkZmVjNGE1YTZkNDFlMTgwNTljZjMwMDhmM2Y3ZDdfMS0wLTEtMS0zOTI3MC90ZXh0cmVnaW9uOjliYjhmNGIyMmIyZTRhNDQ5OTQ5NGI5YTRkZWJmMTc1XzI3NDg3NzkwNjk1NzM_a39951ce-1b08-4537-a3af-49d51cae3c96">34</dei:AuditorFirmId>
    <dei:AuditorName
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl83OS9mcmFnOjMyYmRiYzMzYjFiMzQwMWM5Y2NkYTE5ZDk1NzVlOWQ1L3RleHRyZWdpb246MzJiZGJjMzNiMWIzNDAxYzljY2RhMTlkOTU3NWU5ZDVfMTA5OTUxMTYzMzU1MA_1059541d-a2ad-42a6-8bfb-62ee01db42ab">DELOITTE &amp; TOUCHE LLP</dei:AuditorName>
    <dei:AuditorLocation
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl83OS9mcmFnOjMyYmRiYzMzYjFiMzQwMWM5Y2NkYTE5ZDk1NzVlOWQ1L3RleHRyZWdpb246MzJiZGJjMzNiMWIzNDAxYzljY2RhMTlkOTU3NWU5ZDVfMTA5OTUxMTYzMDcwMw_02e82ee0-6a8a-4e5e-8408-0eeb0ded3282">San Jose, California</dei:AuditorLocation>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfNC0xLTEtMS0yODEwNQ_84a968b7-3f60-4d40-b88c-9303726c631f"
      unitRef="usd">82505000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfNC0zLTEtMS0yODEwNQ_fe394714-e98f-474c-b540-4170992de559"
      unitRef="usd">81188000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfNS0xLTEtMS0yODEwNQ_b3754914-f5ec-42be-9372-aa99cb8ab993"
      unitRef="usd">77121000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfNS0zLTEtMS0yODEwNQ_41bbf44c-8162-4b7a-ae48-4b09f3e343c1"
      unitRef="usd">19793000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AccountsReceivableNetCurrent
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfNi0xLTEtMS0yODEwNQ_e10a33d3-7281-41aa-a656-03a516a6f5de"
      unitRef="usd">286916000</us-gaap:AccountsReceivableNetCurrent>
    <us-gaap:AccountsReceivableNetCurrent
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfNi0zLTEtMS0yODEwNQ_cd78f695-9643-4841-a044-ad57f0cf4c9e"
      unitRef="usd">219511000</us-gaap:AccountsReceivableNetCurrent>
    <us-gaap:PrepaidExpenseAndOtherAssetsCurrent
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfNy0xLTEtMS0yODEwNQ_9217f9d8-d34d-41b0-97ef-ac884027038f"
      unitRef="usd">14207000</us-gaap:PrepaidExpenseAndOtherAssetsCurrent>
    <us-gaap:PrepaidExpenseAndOtherAssetsCurrent
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfNy0zLTEtMS0yODEwNQ_2e95ae9e-db1a-477c-9334-83013d670b26"
      unitRef="usd">6622000</us-gaap:PrepaidExpenseAndOtherAssetsCurrent>
    <us-gaap:AssetsCurrent
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfOC0xLTEtMS0yODEwNQ_930b40da-5405-42f1-9064-9805fdd1492b"
      unitRef="usd">460749000</us-gaap:AssetsCurrent>
    <us-gaap:AssetsCurrent
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfOC0zLTEtMS0yODEwNQ_696634ad-9468-4b73-a7b7-3a65d2261552"
      unitRef="usd">327114000</us-gaap:AssetsCurrent>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfOS0xLTEtMS0yODEwNQ_3891c8cf-31c7-41d0-8d87-0ae26911ed29"
      unitRef="usd">50140000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfOS0zLTEtMS0yODEwNQ_e8f1143d-0ab2-438c-8136-021f33023a5e"
      unitRef="usd">30044000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:OperatingLeaseRightOfUseAsset
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMTAtMS0xLTEtNDAwMDM_70a47bba-513d-4fca-8402-c7ee2690730f"
      unitRef="usd">21613000</us-gaap:OperatingLeaseRightOfUseAsset>
    <us-gaap:OperatingLeaseRightOfUseAsset
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMTAtMy0xLTEtNDAwMDM_e0c76333-f114-4399-acef-0c91df8917ba"
      unitRef="usd">0</us-gaap:OperatingLeaseRightOfUseAsset>
    <us-gaap:Goodwill
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMTAtMS0xLTEtMjgxMDU_9d1838f2-d0e9-470e-af05-1e3c952fec04"
      unitRef="usd">6250000</us-gaap:Goodwill>
    <us-gaap:Goodwill
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMTAtMy0xLTEtMjgxMDU_f3586cab-62a4-4089-9961-37e1e559d7e6"
      unitRef="usd">6250000</us-gaap:Goodwill>
    <us-gaap:DeferredIncomeTaxAssetsNet
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMTEtMS0xLTEtMjgxMDU_ec0d10b9-059b-459c-90cf-601fd741b311"
      unitRef="usd">515000</us-gaap:DeferredIncomeTaxAssetsNet>
    <us-gaap:DeferredIncomeTaxAssetsNet
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMTEtMy0xLTEtMjgxMDU_3fb1d0f6-a5b6-4c39-8808-77d8ffd4302d"
      unitRef="usd">762000</us-gaap:DeferredIncomeTaxAssetsNet>
    <us-gaap:OtherAssetsNoncurrent
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMTItMS0xLTEtMjgxMDU_12d919f8-3b60-46ec-a6d5-e197f272fac3"
      unitRef="usd">10948000</us-gaap:OtherAssetsNoncurrent>
    <us-gaap:OtherAssetsNoncurrent
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMTItMy0xLTEtMjgxMDU_cff81947-7dd8-470b-9617-819a43f72958"
      unitRef="usd">7076000</us-gaap:OtherAssetsNoncurrent>
    <us-gaap:Assets
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMTMtMS0xLTEtMjgxMDU_13649921-1a03-4e8e-82a2-6e9fedbfdb1c"
      unitRef="usd">550215000</us-gaap:Assets>
    <us-gaap:Assets
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMTMtMy0xLTEtMjgxMDU_8112e283-20d9-4371-8995-6fe29ed08d4b"
      unitRef="usd">371246000</us-gaap:Assets>
    <us-gaap:AccountsPayableCurrent
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMTYtMS0xLTEtMjgxMDU_2f965708-d677-4c85-95e7-3951c5165291"
      unitRef="usd">244321000</us-gaap:AccountsPayableCurrent>
    <us-gaap:AccountsPayableCurrent
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMTYtMy0xLTEtMjgxMDU_7b35b2b9-9eaf-4c96-92b1-293b3a85a02f"
      unitRef="usd">176731000</us-gaap:AccountsPayableCurrent>
    <us-gaap:AccruedLiabilitiesCurrent
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMTctMS0xLTEtMjgxMDU_a220194c-463d-4ae3-8231-94d7806e85bb"
      unitRef="usd">18780000</us-gaap:AccruedLiabilitiesCurrent>
    <us-gaap:AccruedLiabilitiesCurrent
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMTctMy0xLTEtMjgxMDU_56f3f62a-ffc3-4d2b-8665-344cd2c86575"
      unitRef="usd">14844000</us-gaap:AccruedLiabilitiesCurrent>
    <us-gaap:OperatingLeaseLiabilityCurrent
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMTktMS0xLTEtNDAwMTM_55f38009-a2e7-41d5-9846-4b838cd0a9be"
      unitRef="usd">3864000</us-gaap:OperatingLeaseLiabilityCurrent>
    <us-gaap:OperatingLeaseLiabilityCurrent
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMTktMy0xLTEtNDAwMTM_ba084a4f-843f-4533-a07e-0818b416f682"
      unitRef="usd">0</us-gaap:OperatingLeaseLiabilityCurrent>
    <us-gaap:LiabilitiesCurrent
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMTgtMS0xLTEtMjgxMDU_d294caaa-02e5-4005-ab0c-16cba8b52b34"
      unitRef="usd">266965000</us-gaap:LiabilitiesCurrent>
    <us-gaap:LiabilitiesCurrent
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMTgtMy0xLTEtMjgxMDU_688664e5-0e11-4a1e-b5e9-4cb9b789e034"
      unitRef="usd">191575000</us-gaap:LiabilitiesCurrent>
    <us-gaap:OperatingLeaseLiabilityNoncurrent
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMjEtMS0xLTEtNDAwMjY_f0ddeace-8949-4560-8b9d-1ecc7e839ea3"
      unitRef="usd">17842000</us-gaap:OperatingLeaseLiabilityNoncurrent>
    <us-gaap:OperatingLeaseLiabilityNoncurrent
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMjEtMy0xLTEtNDAwMjY_f1f4da3a-e2bb-4f66-864d-0bf641098728"
      unitRef="usd">0</us-gaap:OperatingLeaseLiabilityNoncurrent>
    <us-gaap:DeferredIncomeTaxLiabilitiesNet
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMTktMS0xLTEtMjgxMDU_a61c5f0a-5916-4e96-9393-4a183357594a"
      unitRef="usd">6067000</us-gaap:DeferredIncomeTaxLiabilitiesNet>
    <us-gaap:DeferredIncomeTaxLiabilitiesNet
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMTktMy0xLTEtMjgxMDU_f5fcdc47-8ec5-4b3b-b8a0-476fc8fe0883"
      unitRef="usd">1561000</us-gaap:DeferredIncomeTaxLiabilitiesNet>
    <us-gaap:OtherLiabilitiesNoncurrent
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMjAtMS0xLTEtMjgxMDU_563a0112-0213-411f-8c58-4600ebbb86a4"
      unitRef="usd">2161000</us-gaap:OtherLiabilitiesNoncurrent>
    <us-gaap:OtherLiabilitiesNoncurrent
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMjAtMy0xLTEtMjgxMDU_73edfb09-bdb7-4358-a193-416132278145"
      unitRef="usd">2683000</us-gaap:OtherLiabilitiesNoncurrent>
    <us-gaap:Liabilities
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMjEtMS0xLTEtMjgxMDU_992b8eff-b0e7-4458-9fcf-c3ba1ca4ee2f"
      unitRef="usd">293035000</us-gaap:Liabilities>
    <us-gaap:Liabilities
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMjEtMy0xLTEtMjgxMDU_a1068f72-479e-4fb3-897b-3967645d76b7"
      unitRef="usd">195819000</us-gaap:Liabilities>
    <us-gaap:CommitmentsAndContingencies
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMjItMS0xLTEtMjgxMDU_2098d35d-1a40-4db8-8f0e-f5a1661e2041"
      unitRef="usd"
      xsi:nil="true"/>
    <us-gaap:CommitmentsAndContingencies
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMjItMy0xLTEtMjgxMDU_70905583-1a4b-449b-8d29-a9bbe66f07b2"
      unitRef="usd"
      xsi:nil="true"/>
    <us-gaap:PreferredStockParOrStatedValuePerShare
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMjYtMC0xLTEtMjgxMDUvdGV4dHJlZ2lvbjoyNzg4YTA3NTVmNmI0YzE3YjJkMWI0MWMwODQ1Mjk4Yl8yNzQ4Nzc5MDY5NTkz_93c632e6-b049-4f15-96e1-e854ac8538e2"
      unitRef="usdPerShare">0.0001</us-gaap:PreferredStockParOrStatedValuePerShare>
    <us-gaap:PreferredStockParOrStatedValuePerShare
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMjYtMC0xLTEtMjgxMDUvdGV4dHJlZ2lvbjoyNzg4YTA3NTVmNmI0YzE3YjJkMWI0MWMwODQ1Mjk4Yl8yNzQ4Nzc5MDY5NTkz_b39050dc-c854-41f7-948b-8a241b44517e"
      unitRef="usdPerShare">0.0001</us-gaap:PreferredStockParOrStatedValuePerShare>
    <us-gaap:PreferredStockSharesAuthorized
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMjYtMC0xLTEtMjgxMDUvdGV4dHJlZ2lvbjoyNzg4YTA3NTVmNmI0YzE3YjJkMWI0MWMwODQ1Mjk4Yl8yNzQ4Nzc5MDY5NTk3_56dec636-a4b7-4840-9283-a65dc44bda60"
      unitRef="shares">10000000</us-gaap:PreferredStockSharesAuthorized>
    <us-gaap:PreferredStockSharesAuthorized
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMjYtMC0xLTEtMjgxMDUvdGV4dHJlZ2lvbjoyNzg4YTA3NTVmNmI0YzE3YjJkMWI0MWMwODQ1Mjk4Yl8yNzQ4Nzc5MDY5NTk3_924dba19-e459-473b-a2c7-fa7324eb2180"
      unitRef="shares">10000000</us-gaap:PreferredStockSharesAuthorized>
    <us-gaap:PreferredStockSharesOutstanding
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMjYtMC0xLTEtMjgxMDUvdGV4dHJlZ2lvbjoyNzg4YTA3NTVmNmI0YzE3YjJkMWI0MWMwODQ1Mjk4Yl85MzQ1ODQ4ODM2Mjc5_90fcd162-8180-4234-a165-5caf71c95913"
      unitRef="shares">0</us-gaap:PreferredStockSharesOutstanding>
    <us-gaap:PreferredStockSharesOutstanding
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMjYtMC0xLTEtMjgxMDUvdGV4dHJlZ2lvbjoyNzg4YTA3NTVmNmI0YzE3YjJkMWI0MWMwODQ1Mjk4Yl85MzQ1ODQ4ODM2Mjc5_912a6631-df23-4f99-8a40-6b6babccfd97"
      unitRef="shares">0</us-gaap:PreferredStockSharesOutstanding>
    <us-gaap:PreferredStockSharesIssued
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMjYtMC0xLTEtMjgxMDUvdGV4dHJlZ2lvbjoyNzg4YTA3NTVmNmI0YzE3YjJkMWI0MWMwODQ1Mjk4Yl85MzQ1ODQ4ODM2Mjc5_a9419664-c1e9-4dea-b039-9d0a52e22479"
      unitRef="shares">0</us-gaap:PreferredStockSharesIssued>
    <us-gaap:PreferredStockSharesIssued
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMjYtMC0xLTEtMjgxMDUvdGV4dHJlZ2lvbjoyNzg4YTA3NTVmNmI0YzE3YjJkMWI0MWMwODQ1Mjk4Yl85MzQ1ODQ4ODM2Mjc5_b16ea518-b35c-4b53-8763-e6d23e1e4501"
      unitRef="shares">0</us-gaap:PreferredStockSharesIssued>
    <us-gaap:PreferredStockValue
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMjYtMS0xLTEtMjgxMDU_d8667858-555f-43e4-8e12-5ff1aefb0b3f"
      unitRef="usd">0</us-gaap:PreferredStockValue>
    <us-gaap:PreferredStockValue
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMjYtMy0xLTEtMjgxMDU_73fb6952-ec9e-47c9-a52d-2566128b6f79"
      unitRef="usd">0</us-gaap:PreferredStockValue>
    <us-gaap:CommonStockParOrStatedValuePerShare
      contextRef="i492ac259620d4e07b331e135b937f8c0_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMjctMC0xLTEtMjgxMDUvdGV4dHJlZ2lvbjo0MzlhMzk2OTIxZTY0MTU4YjgwYzgzMzBhMjYyNGRmZV8yNzQ4Nzc5MDY5NzQ0_0bd2544c-f9e7-4f17-943b-43cc8dcfe18a"
      unitRef="usdPerShare">0.0001</us-gaap:CommonStockParOrStatedValuePerShare>
    <us-gaap:CommonStockParOrStatedValuePerShare
      contextRef="iff0c3515085c49e984751bbe93607e09_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMjctMC0xLTEtMjgxMDUvdGV4dHJlZ2lvbjo0MzlhMzk2OTIxZTY0MTU4YjgwYzgzMzBhMjYyNGRmZV8yNzQ4Nzc5MDY5NzQ0_b38b2692-96b8-471e-8cb9-1d847de57d3b"
      unitRef="usdPerShare">0.0001</us-gaap:CommonStockParOrStatedValuePerShare>
    <us-gaap:CommonStockParOrStatedValuePerShare
      contextRef="id7fd9d2a49704cec8ca50ff9b30532a8_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMjctMC0xLTEtMjgxMDUvdGV4dHJlZ2lvbjo0MzlhMzk2OTIxZTY0MTU4YjgwYzgzMzBhMjYyNGRmZV8yNzQ4Nzc5MDY5NzQ0_ccaca10e-03ed-44fd-b18f-e3d073426e88"
      unitRef="usdPerShare">0.0001</us-gaap:CommonStockParOrStatedValuePerShare>
    <us-gaap:CommonStockParOrStatedValuePerShare
      contextRef="ie868a74707f14b528719d6b0c12b0f79_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMjctMC0xLTEtMjgxMDUvdGV4dHJlZ2lvbjo0MzlhMzk2OTIxZTY0MTU4YjgwYzgzMzBhMjYyNGRmZV8yNzQ4Nzc5MDY5NzQ0_fce5e51d-6a03-4c54-af77-94a2cb9eed0b"
      unitRef="usdPerShare">0.0001</us-gaap:CommonStockParOrStatedValuePerShare>
    <us-gaap:CommonStockSharesAuthorized
      contextRef="id7fd9d2a49704cec8ca50ff9b30532a8_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMjctMC0xLTEtMjgxMDUvdGV4dHJlZ2lvbjo0MzlhMzk2OTIxZTY0MTU4YjgwYzgzMzBhMjYyNGRmZV8yNzQ4Nzc5MDY5NzQ4_107a6036-b840-4ef1-a71b-5330ef20d647"
      unitRef="shares">1000000000</us-gaap:CommonStockSharesAuthorized>
    <us-gaap:CommonStockSharesAuthorized
      contextRef="ie868a74707f14b528719d6b0c12b0f79_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMjctMC0xLTEtMjgxMDUvdGV4dHJlZ2lvbjo0MzlhMzk2OTIxZTY0MTU4YjgwYzgzMzBhMjYyNGRmZV8yNzQ4Nzc5MDY5NzQ4_b1cb6b9f-deb0-4fcf-b18c-9e649abf4cdb"
      unitRef="shares">1000000000</us-gaap:CommonStockSharesAuthorized>
    <us-gaap:CommonStockSharesIssued
      contextRef="id7fd9d2a49704cec8ca50ff9b30532a8_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMjctMC0xLTEtMjgxMDUvdGV4dHJlZ2lvbjo0MzlhMzk2OTIxZTY0MTU4YjgwYzgzMzBhMjYyNGRmZV8yNzQ4Nzc5MDY5OTcy_5e8d077b-b10d-456d-9ace-0c2034b05cf6"
      unitRef="shares">40695140</us-gaap:CommonStockSharesIssued>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="id7fd9d2a49704cec8ca50ff9b30532a8_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMjctMC0xLTEtMjgxMDUvdGV4dHJlZ2lvbjo0MzlhMzk2OTIxZTY0MTU4YjgwYzgzMzBhMjYyNGRmZV8yNzQ4Nzc5MDY5OTcy_78348459-4023-4c1b-92ee-c0a8e5804bf1"
      unitRef="shares">40695140</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:CommonStockSharesIssued
      contextRef="ie868a74707f14b528719d6b0c12b0f79_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMjctMC0xLTEtMjgxMDUvdGV4dHJlZ2lvbjo0MzlhMzk2OTIxZTY0MTU4YjgwYzgzMzBhMjYyNGRmZV8yNzQ4Nzc5MDY5OTc2_500a2ecc-2915-49aa-b185-f1a9347da6fd"
      unitRef="shares">6801368</us-gaap:CommonStockSharesIssued>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="ie868a74707f14b528719d6b0c12b0f79_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMjctMC0xLTEtMjgxMDUvdGV4dHJlZ2lvbjo0MzlhMzk2OTIxZTY0MTU4YjgwYzgzMzBhMjYyNGRmZV8yNzQ4Nzc5MDY5OTc2_d6b35989-4c90-4c4a-a938-a21989dedb54"
      unitRef="shares">6801368</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:CommonStockSharesAuthorized
      contextRef="i492ac259620d4e07b331e135b937f8c0_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMjctMC0xLTEtMjgxMDUvdGV4dHJlZ2lvbjo0MzlhMzk2OTIxZTY0MTU4YjgwYzgzMzBhMjYyNGRmZV8yNzQ4Nzc5MDY5OTky_b9a2e075-97ba-4a05-8ce4-0c663b4c026c"
      unitRef="shares">1000000000</us-gaap:CommonStockSharesAuthorized>
    <us-gaap:CommonStockSharesAuthorized
      contextRef="iff0c3515085c49e984751bbe93607e09_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMjctMC0xLTEtMjgxMDUvdGV4dHJlZ2lvbjo0MzlhMzk2OTIxZTY0MTU4YjgwYzgzMzBhMjYyNGRmZV8yNzQ4Nzc5MDY5OTky_f83e6f4e-d21a-43dc-8482-c13a50117f8e"
      unitRef="shares">1000000000</us-gaap:CommonStockSharesAuthorized>
    <us-gaap:CommonStockSharesIssued
      contextRef="i492ac259620d4e07b331e135b937f8c0_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMjctMC0xLTEtMjgxMDUvdGV4dHJlZ2lvbjo0MzlhMzk2OTIxZTY0MTU4YjgwYzgzMzBhMjYyNGRmZV8yNzQ4Nzc5MDcwMDA0_1ccb7715-c1fc-4ea7-b50e-3f479207905c"
      unitRef="shares">11159609</us-gaap:CommonStockSharesIssued>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i492ac259620d4e07b331e135b937f8c0_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMjctMC0xLTEtMjgxMDUvdGV4dHJlZ2lvbjo0MzlhMzk2OTIxZTY0MTU4YjgwYzgzMzBhMjYyNGRmZV8yNzQ4Nzc5MDcwMDA0_cfefe457-e894-4ba2-9ece-47315d15cde7"
      unitRef="shares">11159609</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:CommonStockSharesIssued
      contextRef="iff0c3515085c49e984751bbe93607e09_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMjctMC0xLTEtMjgxMDUvdGV4dHJlZ2lvbjo0MzlhMzk2OTIxZTY0MTU4YjgwYzgzMzBhMjYyNGRmZV8yNzQ4Nzc5MDcwMDA4_60e009e9-8f4b-4645-a50a-78d4111787f1"
      unitRef="shares">42186774</us-gaap:CommonStockSharesIssued>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="iff0c3515085c49e984751bbe93607e09_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMjctMC0xLTEtMjgxMDUvdGV4dHJlZ2lvbjo0MzlhMzk2OTIxZTY0MTU4YjgwYzgzMzBhMjYyNGRmZV8yNzQ4Nzc5MDcwMDA4_eacb3ce4-658e-451e-8792-17f0a9deb494"
      unitRef="shares">42186774</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:CommonStockValue
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMjctMS0xLTEtMjgxMDU_887e7e29-8204-4aa3-97ea-273e2a713153"
      unitRef="usd">6000</us-gaap:CommonStockValue>
    <us-gaap:CommonStockValue
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMjctMy0xLTEtMjgxMDU_54f3adca-00b5-4254-9f59-5db62ba0d401"
      unitRef="usd">6000</us-gaap:CommonStockValue>
    <us-gaap:TreasuryStockShares
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMjgtMC0xLTEtMjgxMDUvdGV4dHJlZ2lvbjpjZjQ0MjYwN2Q4OTA0MDg5YjhiZDQ2YzI5M2YzOTE4M18yNzQ4Nzc5MDY5NTE4_9fcd8e95-4df8-4ce6-ac38-938476863a07"
      unitRef="shares">3140437</us-gaap:TreasuryStockShares>
    <us-gaap:TreasuryStockShares
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMjgtMC0xLTEtMjgxMDUvdGV4dHJlZ2lvbjpjZjQ0MjYwN2Q4OTA0MDg5YjhiZDQ2YzI5M2YzOTE4M18yNzQ4Nzc5MDY5NTIy_7185c2aa-1142-4b67-a07e-8113d5f7ee61"
      unitRef="shares">3139295</us-gaap:TreasuryStockShares>
    <us-gaap:TreasuryStockValue
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMjgtMS0xLTEtMjgxMDU_51b030f2-99e4-42c4-bee9-939e96516b03"
      unitRef="usd">11486000</us-gaap:TreasuryStockValue>
    <us-gaap:TreasuryStockValue
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMjgtMy0xLTEtMjgxMDU_bdbdd042-07d2-447e-93cf-48826f01647b"
      unitRef="usd">11434000</us-gaap:TreasuryStockValue>
    <us-gaap:AdditionalPaidInCapital
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMjktMS0xLTEtMjgxMDU_b4eefd65-f19b-417d-8ce4-f77f14c95b9a"
      unitRef="usd">169401000</us-gaap:AdditionalPaidInCapital>
    <us-gaap:AdditionalPaidInCapital
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMjktMy0xLTEtMjgxMDU_048ae40b-82f0-476d-96a5-e870ebfda07d"
      unitRef="usd">144163000</us-gaap:AdditionalPaidInCapital>
    <us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMzAtMS0xLTEtMjgxMDU_8c0b3309-cee7-4d07-b6af-a6dd86140a4a"
      unitRef="usd">-36000</us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax>
    <us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMzAtMy0xLTEtMjgxMDU_3fa270d6-e8d1-4cd7-909d-33479a023851"
      unitRef="usd">1000</us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax>
    <us-gaap:RetainedEarningsAccumulatedDeficit
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMzEtMS0xLTEtMjgxMDU_0b71680c-65da-4a87-8d40-caa2317c04e4"
      unitRef="usd">99295000</us-gaap:RetainedEarningsAccumulatedDeficit>
    <us-gaap:RetainedEarningsAccumulatedDeficit
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMzEtMy0xLTEtMjgxMDU_537a5e65-8c73-4ae4-8c26-507efd8bf226"
      unitRef="usd">42691000</us-gaap:RetainedEarningsAccumulatedDeficit>
    <us-gaap:StockholdersEquity
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMzItMS0xLTEtMjgxMDU_bf0d5d14-1ebc-4cab-91c9-0e06bebdafcb"
      unitRef="usd">257180000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMzItMy0xLTEtMjgxMDU_99d28f98-cc7b-4b2a-b569-bb8158b8e57e"
      unitRef="usd">175427000</us-gaap:StockholdersEquity>
    <us-gaap:LiabilitiesAndStockholdersEquity
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMzMtMS0xLTEtMjgxMDU_29aaa5b2-ba4c-402f-842d-8a45d5c51e7c"
      unitRef="usd">550215000</us-gaap:LiabilitiesAndStockholdersEquity>
    <us-gaap:LiabilitiesAndStockholdersEquity
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84Mi9mcmFnOmI1MWJkMDRhZjU0ODQxOWQ4MWQ3Y2MxZWIzOTlkN2E4L3RhYmxlOjQ2ODhhNWQwMWExOTQyNWU5MGQwOWM3YWRjM2Y3NzVmL3RhYmxlcmFuZ2U6NDY4OGE1ZDAxYTE5NDI1ZTkwZDA5YzdhZGMzZjc3NWZfMzMtMy0xLTEtMjgxMDU_73d1c1e2-58f1-4167-8e01-b5c7a8d99dae"
      unitRef="usd">371246000</us-gaap:LiabilitiesAndStockholdersEquity>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfMy0xLTEtMS0yODEwNQ_efa396ef-9ee5-4d9a-a097-01c847f89b12"
      unitRef="usd">226908000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfMy0zLTEtMS0yODEwNQ_b61194b2-bfa7-4b38-a00d-a6ce6367be9b"
      unitRef="usd">148748000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfMy01LTEtMS0yODEwNQ_eb572c9f-3632-4e6a-a563-83407d13df98"
      unitRef="usd">113871000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:CostOfGoodsAndServicesSold
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfNC0xLTEtMS0yODEwNQ_ea2a9895-bfe0-4e2b-b5b8-fff4fdff5ebc"
      unitRef="usd">58313000</us-gaap:CostOfGoodsAndServicesSold>
    <us-gaap:CostOfGoodsAndServicesSold
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfNC0zLTEtMS0yODEwNQ_4ceb3a56-7aaf-4f74-a80b-ad17927c4be2"
      unitRef="usd">41186000</us-gaap:CostOfGoodsAndServicesSold>
    <us-gaap:CostOfGoodsAndServicesSold
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfNC01LTEtMS0yODEwNQ_1bf1a4ae-2fd6-4ccd-803c-470635d65420"
      unitRef="usd">36104000</us-gaap:CostOfGoodsAndServicesSold>
    <us-gaap:GrossProfit
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfNS0xLTEtMS0yODEwNQ_8c55250c-5753-4d93-b6a3-472dbcc2aa7e"
      unitRef="usd">168595000</us-gaap:GrossProfit>
    <us-gaap:GrossProfit
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfNS0zLTEtMS0yODEwNQ_3a17b46c-057a-433d-8eb0-cdecfe5b9718"
      unitRef="usd">107562000</us-gaap:GrossProfit>
    <us-gaap:GrossProfit
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfNS01LTEtMS0yODEwNQ_0a4c925c-c5f2-4458-a089-4f2f7ef92826"
      unitRef="usd">77767000</us-gaap:GrossProfit>
    <us-gaap:ResearchAndDevelopmentExpense
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfOC0xLTEtMS0yODEwNQ_2616fe1a-fcc2-4e72-99d8-cb07036fb362"
      unitRef="usd">15885000</us-gaap:ResearchAndDevelopmentExpense>
    <us-gaap:ResearchAndDevelopmentExpense
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfOC0zLTEtMS0yODEwNQ_87cf5009-2137-4e71-b9b6-f5781ee9d0bc"
      unitRef="usd">12250000</us-gaap:ResearchAndDevelopmentExpense>
    <us-gaap:ResearchAndDevelopmentExpense
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfOC01LTEtMS0yODEwNQ_0ea38017-28d1-4255-97be-79c42289fd43"
      unitRef="usd">12453000</us-gaap:ResearchAndDevelopmentExpense>
    <us-gaap:SellingAndMarketingExpense
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfOS0xLTEtMS0yODEwNQ_0d481732-38bc-46a8-9c19-4c684c6e6bd9"
      unitRef="usd">58160000</us-gaap:SellingAndMarketingExpense>
    <us-gaap:SellingAndMarketingExpense
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfOS0zLTEtMS0yODEwNQ_e3f2f539-e9b4-40e4-9a09-f2ef2295db77"
      unitRef="usd">43297000</us-gaap:SellingAndMarketingExpense>
    <us-gaap:SellingAndMarketingExpense
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfOS01LTEtMS0yODEwNQ_77442315-7185-414c-85ef-962aaafa8a9f"
      unitRef="usd">36498000</us-gaap:SellingAndMarketingExpense>
    <us-gaap:GeneralAndAdministrativeExpense
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfMTAtMS0xLTEtMjgxMDU_9b0bdf59-33c1-45db-baae-2a8810a004db"
      unitRef="usd">35761000</us-gaap:GeneralAndAdministrativeExpense>
    <us-gaap:GeneralAndAdministrativeExpense
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfMTAtMy0xLTEtMjgxMDU_6846a373-bc19-41e6-ad39-8048e47319b3"
      unitRef="usd">20260000</us-gaap:GeneralAndAdministrativeExpense>
    <us-gaap:GeneralAndAdministrativeExpense
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfMTAtNS0xLTEtMjgxMDU_aab61036-4057-410c-96ee-14f7f7ab47c5"
      unitRef="usd">20307000</us-gaap:GeneralAndAdministrativeExpense>
    <us-gaap:OperatingExpenses
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfMTEtMS0xLTEtMjgxMDU_5c6b8d9a-7824-4732-919f-6937b12d1313"
      unitRef="usd">109806000</us-gaap:OperatingExpenses>
    <us-gaap:OperatingExpenses
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfMTEtMy0xLTEtMjgxMDU_6f06b525-6bdf-4759-b775-8f2ca54f9e57"
      unitRef="usd">75807000</us-gaap:OperatingExpenses>
    <us-gaap:OperatingExpenses
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfMTEtNS0xLTEtMjgxMDU_5f025652-085f-44fd-bb28-1baefc705333"
      unitRef="usd">69258000</us-gaap:OperatingExpenses>
    <us-gaap:OperatingIncomeLoss
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfMTItMS0xLTEtMjgxMDU_f2f52078-c5ea-415b-a911-290b2d85b248"
      unitRef="usd">58789000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfMTItMy0xLTEtMjgxMDU_2935aac4-bef6-4a64-b1ee-1d4a3110830d"
      unitRef="usd">31755000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfMTItNS0xLTEtMjgxMDU_e1772568-cf97-483a-8a50-15d1b6df42ba"
      unitRef="usd">8509000</us-gaap:OperatingIncomeLoss>
    <us-gaap:InvestmentIncomeInterest
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfMTMtMS0xLTEtMjgxMDU_0c6df3c7-b318-4e40-91c3-b696ad6de328"
      unitRef="usd">300000</us-gaap:InvestmentIncomeInterest>
    <us-gaap:InvestmentIncomeInterest
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfMTMtMy0xLTEtMjgxMDU_a6ebe06f-cc4b-4394-8e66-995000dd3cb9"
      unitRef="usd">537000</us-gaap:InvestmentIncomeInterest>
    <us-gaap:InvestmentIncomeInterest
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfMTMtNS0xLTEtMjgxMDU_b76fc48e-195a-440e-80ae-d0215b114eb4"
      unitRef="usd">1290000</us-gaap:InvestmentIncomeInterest>
    <us-gaap:EquitySecuritiesFvNiUnrealizedGainLoss
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfMTQtMS0xLTEtMzU4MjU_0a3a85f6-defc-40b0-ae69-6c2adbdde880"
      unitRef="usd">5433000</us-gaap:EquitySecuritiesFvNiUnrealizedGainLoss>
    <us-gaap:EquitySecuritiesFvNiUnrealizedGainLoss
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfMTQtMy0xLTEtMzU4MjU_1a0fa6b1-1d21-4882-b8c1-1951c84b2df3"
      unitRef="usd">0</us-gaap:EquitySecuritiesFvNiUnrealizedGainLoss>
    <us-gaap:EquitySecuritiesFvNiUnrealizedGainLoss
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfMTQtNS0xLTEtMzU4MjU_e1aa58f0-e648-481b-b991-165d9d282196"
      unitRef="usd">0</us-gaap:EquitySecuritiesFvNiUnrealizedGainLoss>
    <us-gaap:OtherNonoperatingIncomeExpense
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfMTQtMS0xLTEtMjgxMDU_3bc996a3-c8fd-4d22-b334-560a101838e2"
      unitRef="usd">281000</us-gaap:OtherNonoperatingIncomeExpense>
    <us-gaap:OtherNonoperatingIncomeExpense
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfMTQtMy0xLTEtMjgxMDU_6f835e74-786e-4b43-892b-331ed8732ab8"
      unitRef="usd">-712000</us-gaap:OtherNonoperatingIncomeExpense>
    <us-gaap:OtherNonoperatingIncomeExpense
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfMTQtNS0xLTEtMjgxMDU_b49e076f-3c00-42e1-b611-3095b9f3aebc"
      unitRef="usd">-577000</us-gaap:OtherNonoperatingIncomeExpense>
    <us-gaap:NonoperatingIncomeExpense
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfMTUtMS0xLTEtMjgxMDU_11e4c073-d591-48ca-9e1f-4056aef4d7db"
      unitRef="usd">6014000</us-gaap:NonoperatingIncomeExpense>
    <us-gaap:NonoperatingIncomeExpense
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfMTUtMy0xLTEtMjgxMDU_327f9ac1-b00a-4740-aba8-50c51481f374"
      unitRef="usd">-175000</us-gaap:NonoperatingIncomeExpense>
    <us-gaap:NonoperatingIncomeExpense
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfMTUtNS0xLTEtMjgxMDU_1fd71c70-6f33-4add-b5db-9aed9b6eec29"
      unitRef="usd">713000</us-gaap:NonoperatingIncomeExpense>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfMTYtMS0xLTEtMjgxMDU_804a1eb1-fbab-419b-924e-d10c47c173f7"
      unitRef="usd">64803000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfMTYtMy0xLTEtMjgxMDU_105a3569-cb7b-47e9-b6f9-b2ffca7312ba"
      unitRef="usd">31580000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfMTYtNS0xLTEtMjgxMDU_6f1b8164-13dc-4471-8a0c-7117e8e29023"
      unitRef="usd">9222000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfMTctMS0xLTEtMjgxMDU_4c63e9c3-d509-429f-af8a-c3847a090da8"
      unitRef="usd">8199000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfMTctMy0xLTEtMjgxMDU_cb97e31d-5b84-40db-8988-a35cf52c4264"
      unitRef="usd">4967000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfMTctNS0xLTEtMjgxMDU_3a152068-d281-471f-a9d7-ab8341784ffc"
      unitRef="usd">2579000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:NetIncomeLoss
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfMTgtMS0xLTEtMjgxMDU_ddd244c0-eade-4ec4-b253-258e3c95db40"
      unitRef="usd">56604000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfMTgtMy0xLTEtMjgxMDU_2dc0bd8f-e82c-4b1d-ab4f-8f6af65c49c8"
      unitRef="usd">26613000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfMTgtNS0xLTEtMjgxMDU_851f2653-a964-4aec-8241-ea0ee33afc63"
      unitRef="usd">6643000</us-gaap:NetIncomeLoss>
    <us-gaap:EarningsPerShareBasic
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfMjAtMS0xLTEtMjgxMDU_939f3b34-608f-4d78-b65f-ade9f90c5d96"
      unitRef="usdPerShare">1.13</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfMjAtMy0xLTEtMjgxMDU_a533aa84-c971-4b6b-912b-b2395dcf14e8"
      unitRef="usdPerShare">0.51</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfMjAtNS0xLTEtMjgxMDU_5af2a807-a75f-43a6-b84c-6942d3a92574"
      unitRef="usdPerShare">0.04</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareDiluted
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfMjEtMS0xLTEtMjgxMDU_ba4949d3-7c01-4b78-92cd-5775493cf713"
      unitRef="usdPerShare">1.00</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfMjEtMy0xLTEtMjgxMDU_a678021a-01ac-4c61-9b16-d249bdcea68b"
      unitRef="usdPerShare">0.46</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfMjEtNS0xLTEtMjgxMDU_b1bab5f0-5a07-486b-8298-082c7c23d1e0"
      unitRef="usdPerShare">0.04</us-gaap:EarningsPerShareDiluted>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfMjQtMS0xLTEtMjgxMDU_13365a1f-55ad-4af1-98f2-daaf161a1831"
      unitRef="shares">50184455</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfMjQtMy0xLTEtMjgxMDU_497f2501-8d87-4e68-8a0e-91dad725eb4d"
      unitRef="shares">12642293</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfMjQtNS0xLTEtMjgxMDU_500b57e2-74c4-4b77-a16a-31ec07112da7"
      unitRef="shares">10036983</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfMjUtMS0xLTEtMjgxMDU_1e99008d-0a02-43ac-a1ac-33badaf48627"
      unitRef="shares">56628574</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfMjUtMy0xLTEtMjgxMDU_2ce9ecc5-eb92-4c03-8682-edf4c87372a7"
      unitRef="shares">17125882</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84NS9mcmFnOmUxN2IwMDcyMDU3NzRjODg4YjEwYjBmOTA4YWI5MWQ4L3RhYmxlOjhlNWU4NWFkMzljMjQ3NzM4Y2JlYTlhYmQwY2U1NmU0L3RhYmxlcmFuZ2U6OGU1ZTg1YWQzOWMyNDc3MzhjYmVhOWFiZDBjZTU2ZTRfMjUtNS0xLTEtMjgxMDU_e035e237-2a12-4a94-ac6e-14a4c9b05254"
      unitRef="shares">12169884</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:NetIncomeLoss
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84OC9mcmFnOjhjYmYwYmUyMTQwOTRhNmI5ZTY3YjMzN2ExOWI4MTA1L3RhYmxlOjQ1MWMzMzlmOGQ3YzRiYmZiOTk0YzZjYzdkMzc2MmZiL3RhYmxlcmFuZ2U6NDUxYzMzOWY4ZDdjNGJiZmI5OTRjNmNjN2QzNzYyZmJfMy0xLTEtMS0yODEwNQ_0ece9740-d313-4238-af7b-0ad6bb4dabc0"
      unitRef="usd">56604000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84OC9mcmFnOjhjYmYwYmUyMTQwOTRhNmI5ZTY3YjMzN2ExOWI4MTA1L3RhYmxlOjQ1MWMzMzlmOGQ3YzRiYmZiOTk0YzZjYzdkMzc2MmZiL3RhYmxlcmFuZ2U6NDUxYzMzOWY4ZDdjNGJiZmI5OTRjNmNjN2QzNzYyZmJfMy0zLTEtMS0yODEwNQ_0eaf2251-416b-4bd2-9e0b-d6d11e2dbc2c"
      unitRef="usd">26613000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84OC9mcmFnOjhjYmYwYmUyMTQwOTRhNmI5ZTY3YjMzN2ExOWI4MTA1L3RhYmxlOjQ1MWMzMzlmOGQ3YzRiYmZiOTk0YzZjYzdkMzc2MmZiL3RhYmxlcmFuZ2U6NDUxYzMzOWY4ZDdjNGJiZmI5OTRjNmNjN2QzNzYyZmJfMy01LTEtMS0yODEwNQ_0b29c409-927b-44b6-b1df-7a1d863a2d87"
      unitRef="usd">6643000</us-gaap:NetIncomeLoss>
    <us-gaap:OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84OC9mcmFnOjhjYmYwYmUyMTQwOTRhNmI5ZTY3YjMzN2ExOWI4MTA1L3RhYmxlOjQ1MWMzMzlmOGQ3YzRiYmZiOTk0YzZjYzdkMzc2MmZiL3RhYmxlcmFuZ2U6NDUxYzMzOWY4ZDdjNGJiZmI5OTRjNmNjN2QzNzYyZmJfNS0xLTEtMS0yODEwNQ_7e4b0a32-2ece-4e57-af43-a775d09a4887"
      unitRef="usd">-37000</us-gaap:OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84OC9mcmFnOjhjYmYwYmUyMTQwOTRhNmI5ZTY3YjMzN2ExOWI4MTA1L3RhYmxlOjQ1MWMzMzlmOGQ3YzRiYmZiOTk0YzZjYzdkMzc2MmZiL3RhYmxlcmFuZ2U6NDUxYzMzOWY4ZDdjNGJiZmI5OTRjNmNjN2QzNzYyZmJfNS0zLTEtMS0yODEwNQ_3700b71c-57f5-4c05-99bd-945ca5b33a20"
      unitRef="usd">-5000</us-gaap:OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84OC9mcmFnOjhjYmYwYmUyMTQwOTRhNmI5ZTY3YjMzN2ExOWI4MTA1L3RhYmxlOjQ1MWMzMzlmOGQ3YzRiYmZiOTk0YzZjYzdkMzc2MmZiL3RhYmxlcmFuZ2U6NDUxYzMzOWY4ZDdjNGJiZmI5OTRjNmNjN2QzNzYyZmJfNS01LTEtMS0yODEwNQ_abdeccf5-4fc7-42dd-a9e6-0cf2907d0f1c"
      unitRef="usd">6000</us-gaap:OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84OC9mcmFnOjhjYmYwYmUyMTQwOTRhNmI5ZTY3YjMzN2ExOWI4MTA1L3RhYmxlOjQ1MWMzMzlmOGQ3YzRiYmZiOTk0YzZjYzdkMzc2MmZiL3RhYmxlcmFuZ2U6NDUxYzMzOWY4ZDdjNGJiZmI5OTRjNmNjN2QzNzYyZmJfNi0xLTEtMS0yODEwNQ_691dd49c-ddd1-4ac3-bb7c-6642a75d6526"
      unitRef="usd">56567000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84OC9mcmFnOjhjYmYwYmUyMTQwOTRhNmI5ZTY3YjMzN2ExOWI4MTA1L3RhYmxlOjQ1MWMzMzlmOGQ3YzRiYmZiOTk0YzZjYzdkMzc2MmZiL3RhYmxlcmFuZ2U6NDUxYzMzOWY4ZDdjNGJiZmI5OTRjNmNjN2QzNzYyZmJfNi0zLTEtMS0yODEwNQ_36101c49-c8a2-48e5-bc46-6f813e3e7025"
      unitRef="usd">26608000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84OC9mcmFnOjhjYmYwYmUyMTQwOTRhNmI5ZTY3YjMzN2ExOWI4MTA1L3RhYmxlOjQ1MWMzMzlmOGQ3YzRiYmZiOTk0YzZjYzdkMzc2MmZiL3RhYmxlcmFuZ2U6NDUxYzMzOWY4ZDdjNGJiZmI5OTRjNmNjN2QzNzYyZmJfNi01LTEtMS0yODEwNQ_aaad4997-6c27-4113-948e-3476b6c5492c"
      unitRef="usd">6649000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:TemporaryEquitySharesOutstanding
      contextRef="i5ae36a3071c94e09998a201189720959_I20181231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMi0xLTEtMS0yODEwNQ_7211b8be-9153-4acb-b0e6-a5f37262a6f6"
      unitRef="shares">33398753</us-gaap:TemporaryEquitySharesOutstanding>
    <us-gaap:TemporaryEquityCarryingAmountAttributableToParent
      contextRef="i5ae36a3071c94e09998a201189720959_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMi0zLTEtMS0yODEwNQ_09962a61-78c1-44fb-9fd1-cd53b9457226"
      unitRef="usd">60820000</us-gaap:TemporaryEquityCarryingAmountAttributableToParent>
    <us-gaap:TemporaryEquitySharesOutstanding
      contextRef="i1e08dc90aa7741d39cde0f9f3a5893ea_I20181231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMi01LTEtMS0yODEwNQ_f38a7d3e-2b06-49da-ac4a-5797331dbfda"
      unitRef="shares">5901863</us-gaap:TemporaryEquitySharesOutstanding>
    <us-gaap:TemporaryEquityCarryingAmountAttributableToParent
      contextRef="i1e08dc90aa7741d39cde0f9f3a5893ea_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMi03LTEtMS0yODEwNQ_184b3eb9-319f-4be4-8d65-704ff6128668"
      unitRef="usd">19025000</us-gaap:TemporaryEquityCarryingAmountAttributableToParent>
    <us-gaap:SharesOutstanding
      contextRef="i2dde7357395742d09f0547d96ecb53d4_I20181231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMi0xMC0xLTEtMjgxMDU_a376a733-0bdd-4ec8-adc9-57d2d31ad76d"
      unitRef="shares">5726954</us-gaap:SharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="i2dde7357395742d09f0547d96ecb53d4_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMi0xMi0xLTEtMjgxMDU_36b5b79f-905c-447c-b1c0-c702728d51d0"
      unitRef="usd">1000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i940584f6edcb4d59ac207cfa94dda628_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMi0xNC0xLTEtMjgxMDU_33be901a-c7d4-45f7-8789-bbdca4243a0b"
      unitRef="usd">-11426000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i69fc0504324c47c38cd9c7fae85c5d5a_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMi0xNi0xLTEtMjgxMDU_15fb339b-3eb6-477b-b3c6-227ea46b90cc"
      unitRef="usd">6615000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i44782f78fca44daf9567fcd3ad58400e_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMi0xOC0xLTEtMjgxMDU_43417a8f-9d36-4737-904d-dc6f32b30af6"
      unitRef="usd">0</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i7e8096aa3e38469a8318e73f09bf2763_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMi0yMC0xLTEtMjgxMDU_19753ccd-bd62-498a-9ebc-be6e48e7e43f"
      unitRef="usd">9435000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="ief144f96c0df4282b351b86950ec96f1_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMi0yMi0xLTEtMjgxMDU_49a7a369-6b72-4e69-b370-7c722dbb0a50"
      unitRef="usd">4625000</us-gaap:StockholdersEquity>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="i17b61511a41a493da40a61d9907bcd60_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMTMtMTYtMS0xLTI4MTA1_04baa880-58e3-4c91-aeb3-7aeb7b30acef"
      unitRef="usd">2022000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMTMtMjItMS0xLTI4MTA1_e3ee7904-2006-4bf0-9f45-e484ff108d00"
      unitRef="usd">2022000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <pubm:TemporaryEquitySharesCashlessExerciseOfPreferredStockWarrants
      contextRef="i15940aa8f9be44058374e6007aefd756_D20190101-20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMTQtMS0xLTEtMjgxMDU_891b6b97-dc0c-4a50-aa64-8cb56f8f03d6"
      unitRef="shares">45216</pubm:TemporaryEquitySharesCashlessExerciseOfPreferredStockWarrants>
    <pubm:TemporaryEquityValueCashlessExerciseOfPreferredStockWarrants
      contextRef="i15940aa8f9be44058374e6007aefd756_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMTQtMy0xLTEtMjgxMDU_653403ee-756b-4f5f-9a37-cea08daa89a7"
      unitRef="usd">396000</pubm:TemporaryEquityValueCashlessExerciseOfPreferredStockWarrants>
    <us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised
      contextRef="if668cba99dc0497183d7aae15a60a86d_D20190101-20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMTUtMTAtMS0xLTI4MTA1_e55a46c1-3e7c-4bc5-820c-9d5de019fbd5"
      unitRef="shares">20983</us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="i17b61511a41a493da40a61d9907bcd60_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMTUtMTYtMS0xLTI4MTA1_d6c9d3e4-b859-44c9-b5bd-cc5b586f6c60"
      unitRef="usd">4000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMTUtMjItMS0xLTI4MTA1_5338053f-3e13-4b7f-93fa-33d8380c6c97"
      unitRef="usd">4000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:TreasuryStockSharesAcquired
      contextRef="if668cba99dc0497183d7aae15a60a86d_D20190101-20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMTYtMTAtMS0xLTI4MTA1_db9aa714-50c0-4242-8419-c79769b7ab25"
      unitRef="shares">1721</us-gaap:TreasuryStockSharesAcquired>
    <us-gaap:TreasuryStockValueAcquiredCostMethod
      contextRef="idb910523221440ec9bcd996c25a740e8_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMTYtMTQtMS0xLTI4MTA1_7557cce6-f9de-4ad3-b4f1-556b6156400c"
      unitRef="usd">5000</us-gaap:TreasuryStockValueAcquiredCostMethod>
    <us-gaap:TreasuryStockValueAcquiredCostMethod
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMTYtMjItMS0xLTI4MTA1_91278ac8-36d2-4aec-bc1a-11c171b388fa"
      unitRef="usd">5000</us-gaap:TreasuryStockValueAcquiredCostMethod>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="i4f8935a5717940f5a1506f306dc1547b_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMTctMTgtMS0xLTI4MTA1_6236f66c-3f77-4ff4-8d24-c2f0257f374f"
      unitRef="usd">6000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMTctMjItMS0xLTI4MTA1_a0779947-4d88-466f-a3e0-9de79e41c3bd"
      unitRef="usd">6000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:NetIncomeLoss
      contextRef="i86cd5c5277bb4a198b7b97f2a3adacd4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMTgtMjAtMS0xLTI4MTA1_b0a191fb-b7e2-480a-990a-7f113a5d47b2"
      unitRef="usd">6643000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMTgtMjItMS0xLTI4MTA1_26068ff6-005b-4ae3-b3c6-489204393014"
      unitRef="usd">6643000</us-gaap:NetIncomeLoss>
    <us-gaap:TemporaryEquitySharesOutstanding
      contextRef="if732a43a49af4a1cb8448cb4b3b0224a_I20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMTktMS0xLTEtMjgxMDU_58bd42d2-e1cd-4495-ad3a-f63b11b5be99"
      unitRef="shares">33443969</us-gaap:TemporaryEquitySharesOutstanding>
    <us-gaap:TemporaryEquityCarryingAmountAttributableToParent
      contextRef="if732a43a49af4a1cb8448cb4b3b0224a_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMTktMy0xLTEtMjgxMDU_2fd327fd-68fc-47f7-be79-d0a392c28ec5"
      unitRef="usd">61216000</us-gaap:TemporaryEquityCarryingAmountAttributableToParent>
    <us-gaap:TemporaryEquitySharesOutstanding
      contextRef="ia997974a5b7d4adc8390f87994635ecd_I20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMTktNS0xLTEtMjgxMDU_b3f04bc0-879a-4edf-8804-0488d033a720"
      unitRef="shares">5901863</us-gaap:TemporaryEquitySharesOutstanding>
    <us-gaap:TemporaryEquityCarryingAmountAttributableToParent
      contextRef="ia997974a5b7d4adc8390f87994635ecd_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMTktNy0xLTEtMjgxMDU_34f3ffe7-602c-4e27-8a1d-8c2a95ca2f72"
      unitRef="usd">19025000</us-gaap:TemporaryEquityCarryingAmountAttributableToParent>
    <us-gaap:SharesOutstanding
      contextRef="i7285695688d04766a8faf12f3b818483_I20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMTktMTAtMS0xLTI4MTA1_64fab2c6-a305-4328-aa40-f73470480c2f"
      unitRef="shares">5746216</us-gaap:SharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="i7285695688d04766a8faf12f3b818483_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMTktMTItMS0xLTI4MTA1_8e729b5d-097c-4a64-96ec-36a053885bb9"
      unitRef="usd">1000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="ife0b3e7987494a9197059184d4242a4c_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMTktMTQtMS0xLTI4MTA1_aa2c7714-3e79-488f-8f1e-d3ba77aec9fe"
      unitRef="usd">-11431000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="ie93d7c69fd3c4645b1c408887580dcc2_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMTktMTYtMS0xLTI4MTA1_6fc75db2-b72b-4a2e-bf3a-1edc8c6fad6a"
      unitRef="usd">8641000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="ie8540f7f739341ef984015314ba9476e_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMTktMTgtMS0xLTI4MTA1_f7bd7f7b-c14c-4b2b-9906-b4c21c33e14f"
      unitRef="usd">6000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i5aebd644f837407eb50a305aa566be29_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMTktMjAtMS0xLTI4MTA1_9dc662a1-25a7-42b5-8bf9-687d1f2b43fa"
      unitRef="usd">16078000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="ibcf318f535e34e548d6a7a49e392f2cd_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMTktMjItMS0xLTI4MTA1_ff55663c-60d7-4f2e-a25c-61638f045b8b"
      unitRef="usd">13295000</us-gaap:StockholdersEquity>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="i8e0bb9516780415b95889a6632b5a021_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjAtMTYtMS0xLTI4MTA1_dc9ea338-fa35-46eb-b9f9-854216be84f7"
      unitRef="usd">3603000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjAtMjItMS0xLTI4MTA1_aafb0ad1-91c1-48c3-83cf-9c30554975e0"
      unitRef="usd">3603000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised
      contextRef="id5ba2181fb0b41ffa71b2bbfdf739db3_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjEtMTAtMS0xLTI4MTA1_8b66cd8c-2b03-4da1-a7b5-b4f26fe55096"
      unitRef="shares">1241970</us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="i8e0bb9516780415b95889a6632b5a021_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjEtMTYtMS0xLTI4MTA1_2b22a4d8-4b11-49f3-be14-277d9c636566"
      unitRef="usd">2409000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjEtMjItMS0xLTI4MTA1_e1c98d06-7362-4cc8-a7d0-94750b401a64"
      unitRef="usd">2409000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:TreasuryStockSharesAcquired
      contextRef="id5ba2181fb0b41ffa71b2bbfdf739db3_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjItMTAtMS0xLTI4MTA1_ce3d00c0-224c-4480-85c4-2b2a96e833b7"
      unitRef="shares">876</us-gaap:TreasuryStockSharesAcquired>
    <us-gaap:TreasuryStockValueAcquiredCostMethod
      contextRef="i84c8b9e1882c4bc9b13b79ba285074b8_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjItMTQtMS0xLTI4MTA1_a9d759e6-17b3-4386-a2c3-d9ab469117c6"
      unitRef="usd">3000</us-gaap:TreasuryStockValueAcquiredCostMethod>
    <us-gaap:TreasuryStockValueAcquiredCostMethod
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjItMjItMS0xLTI4MTA1_824c96fe-743e-4183-a3c2-56ea02cc69f1"
      unitRef="usd">3000</us-gaap:TreasuryStockValueAcquiredCostMethod>
    <pubm:AdjustmentsToAdditionalPaidInCapitalIncreaseForRepaymentOfNotesReceivable
      contextRef="i8e0bb9516780415b95889a6632b5a021_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjMtMTYtMS0xLTI4MTA1_b7c345c9-a758-41fc-ad1a-fed8421f5881"
      unitRef="usd">-4268000</pubm:AdjustmentsToAdditionalPaidInCapitalIncreaseForRepaymentOfNotesReceivable>
    <pubm:AdjustmentsToAdditionalPaidInCapitalIncreaseForRepaymentOfNotesReceivable
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMTMtMjItMS0xLTMzMzI2_3cdb6cb6-7008-476e-8e99-6e40cea4cf6d"
      unitRef="usd">-4268000</pubm:AdjustmentsToAdditionalPaidInCapitalIncreaseForRepaymentOfNotesReceivable>
    <pubm:RepaymentOfStockholdersNotesReceivableAndAccruedInterestShares
      contextRef="iac3b4cb5fe5840bb85dac9e8350b928a_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjQtNS0xLTEtMjgxMDU_661caf8a-9f22-422a-90b3-b89eb91bc6e0"
      unitRef="shares">5901863</pubm:RepaymentOfStockholdersNotesReceivableAndAccruedInterestShares>
    <pubm:RepaymentOfStockholdersNotesReceivableAndAccruedInterestAmount
      contextRef="iac3b4cb5fe5840bb85dac9e8350b928a_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjQtNy0xLTEtMjgxMDU_d4c41586-b0ef-44d8-9e34-4ae98acb85ef"
      unitRef="usd">19025000</pubm:RepaymentOfStockholdersNotesReceivableAndAccruedInterestAmount>
    <pubm:RepaymentOfStockholdersNotesReceivableAndAccruedInterestShares
      contextRef="id5ba2181fb0b41ffa71b2bbfdf739db3_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjQtMTAtMS0xLTI4MTA1_0305a562-a60f-4179-8e97-d2269162fd7b"
      unitRef="shares">5901863</pubm:RepaymentOfStockholdersNotesReceivableAndAccruedInterestShares>
    <pubm:RepaymentOfStockholdersNotesReceivableAndAccruedInterestAmount
      contextRef="id5ba2181fb0b41ffa71b2bbfdf739db3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjQtMTItMS0xLTI4MTA1_5ea2bcb8-b9ef-46b7-8d0a-10190dc712fa"
      unitRef="usd">-1000</pubm:RepaymentOfStockholdersNotesReceivableAndAccruedInterestAmount>
    <pubm:RepaymentOfStockholdersNotesReceivableAndAccruedInterestAmount
      contextRef="i8e0bb9516780415b95889a6632b5a021_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjQtMTYtMS0xLTI4MTA1_e250f627-6e91-4e3f-979c-51f3c6250ded"
      unitRef="usd">-19024000</pubm:RepaymentOfStockholdersNotesReceivableAndAccruedInterestAmount>
    <pubm:RepaymentOfStockholdersNotesReceivableAndAccruedInterestAmount
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjQtMjItMS0xLTI4MTA1_288f9f97-e99f-4c0a-8026-c62f44089cdb"
      unitRef="usd">-19025000</pubm:RepaymentOfStockholdersNotesReceivableAndAccruedInterestAmount>
    <pubm:TemporaryEquityStockIssuedDuringPeriodSharesConversionOfConvertibleSecurities
      contextRef="i3775120fd4044723b5bbd3e84bf0762d_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjUtMS0xLTEtMjgxMDU_206fe74c-a301-4c18-852d-1a0917cd77b1"
      unitRef="shares">33443969</pubm:TemporaryEquityStockIssuedDuringPeriodSharesConversionOfConvertibleSecurities>
    <pubm:TemporaryEquityStockIssuedDuringPeriodValueConversionOfConvertibleSecurities
      contextRef="i3775120fd4044723b5bbd3e84bf0762d_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjUtMy0xLTEtMjgxMDU_1281713d-e3a1-4acd-990f-416267e7081a"
      unitRef="usd">61216000</pubm:TemporaryEquityStockIssuedDuringPeriodValueConversionOfConvertibleSecurities>
    <us-gaap:StockIssuedDuringPeriodSharesConversionOfConvertibleSecurities
      contextRef="id5ba2181fb0b41ffa71b2bbfdf739db3_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjUtMTAtMS0xLTI4MTA1_849a221d-9fe4-4cee-acf4-8f8c48b7ae3d"
      unitRef="shares">33443969</us-gaap:StockIssuedDuringPeriodSharesConversionOfConvertibleSecurities>
    <us-gaap:StockIssuedDuringPeriodValueConversionOfConvertibleSecurities
      contextRef="id5ba2181fb0b41ffa71b2bbfdf739db3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjUtMTItMS0xLTI4MTA1_c294230d-034c-413e-aacd-9c1502df3a94"
      unitRef="usd">3000</us-gaap:StockIssuedDuringPeriodValueConversionOfConvertibleSecurities>
    <us-gaap:StockIssuedDuringPeriodValueConversionOfConvertibleSecurities
      contextRef="i8e0bb9516780415b95889a6632b5a021_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjUtMTYtMS0xLTI4MTA1_37b41767-9562-4ad8-be4b-8bfe44bdcb76"
      unitRef="usd">61213000</us-gaap:StockIssuedDuringPeriodValueConversionOfConvertibleSecurities>
    <us-gaap:StockIssuedDuringPeriodValueConversionOfConvertibleSecurities
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMTUtMjItMS0xLTMwMjg5_ea3dcba7-53a3-45f5-bc2a-83b99b5e3bec"
      unitRef="usd">61216000</us-gaap:StockIssuedDuringPeriodValueConversionOfConvertibleSecurities>
    <us-gaap:SaleOfStockNumberOfSharesIssuedInTransaction
      contextRef="id5ba2181fb0b41ffa71b2bbfdf739db3_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjYtMTAtMS0xLTI4MTA1_edc0a572-616b-4280-9ebd-4e16c4747673"
      unitRef="shares">2655000</us-gaap:SaleOfStockNumberOfSharesIssuedInTransaction>
    <us-gaap:SaleOfStockConsiderationReceivedOnTransaction
      contextRef="id5ba2181fb0b41ffa71b2bbfdf739db3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjYtMTItMS0xLTI4MTA1_eab73b0e-16c9-4e4a-ad1f-586f7b5e07e2"
      unitRef="usd">1000</us-gaap:SaleOfStockConsiderationReceivedOnTransaction>
    <us-gaap:SaleOfStockConsiderationReceivedOnTransaction
      contextRef="i8e0bb9516780415b95889a6632b5a021_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjYtMTYtMS0xLTI4MTA1_4c2c3f79-5ec0-4adc-9dcb-4b7991bc8816"
      unitRef="usd">45005000</us-gaap:SaleOfStockConsiderationReceivedOnTransaction>
    <us-gaap:SaleOfStockConsiderationReceivedOnTransaction
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjYtMjItMS0xLTI4Mzg1_6a842810-6c73-4e88-8824-ff1b9016839a"
      unitRef="usd">45006000</us-gaap:SaleOfStockConsiderationReceivedOnTransaction>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="i6c702817391c42f3ae0e005a017d8763_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjctMTgtMS0xLTI4MTA1_a414fe1d-2c14-4467-b778-87573d519074"
      unitRef="usd">-5000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjctMjItMS0xLTI4MTA1_02d3e41b-c7f5-4b83-ab3a-11fe5ecf460e"
      unitRef="usd">-5000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:NetIncomeLoss
      contextRef="id18bae8b58ae4157949edbeeaeabd2c6_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjgtMjAtMS0xLTI4MTA1_6854cbdc-b23f-4fad-b1af-201fb06e2062"
      unitRef="usd">26613000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjgtMjItMS0xLTI4MTA1_22947380-ef23-4a97-8aca-c33dd0f49faf"
      unitRef="usd">26613000</us-gaap:NetIncomeLoss>
    <us-gaap:TemporaryEquitySharesOutstanding
      contextRef="ic328b481ff25493e9b8823efbaf6c256_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjktMS0xLTEtMjgxMDU_fdb5ec4f-e421-4e72-80f3-fe97ab73eaad"
      unitRef="shares">0</us-gaap:TemporaryEquitySharesOutstanding>
    <us-gaap:TemporaryEquityCarryingAmountAttributableToParent
      contextRef="ic328b481ff25493e9b8823efbaf6c256_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjktMy0xLTEtMjgxMDU_5145b5b6-877b-40b4-a3e0-832544bc45fa"
      unitRef="usd">0</us-gaap:TemporaryEquityCarryingAmountAttributableToParent>
    <us-gaap:TemporaryEquitySharesOutstanding
      contextRef="i426f3917019242bba5c8de2ef285f3f1_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjktNS0xLTEtMjgxMDU_54d9cb1b-095a-4311-a9c9-361b7a7c0f8e"
      unitRef="shares">0</us-gaap:TemporaryEquitySharesOutstanding>
    <us-gaap:TemporaryEquityCarryingAmountAttributableToParent
      contextRef="i426f3917019242bba5c8de2ef285f3f1_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjktNy0xLTEtMjgxMDU_5e4431fe-9bf6-48d9-b427-278cb61db0af"
      unitRef="usd">0</us-gaap:TemporaryEquityCarryingAmountAttributableToParent>
    <us-gaap:SharesOutstanding
      contextRef="i03e1d9770d564a329bb2adabf49fa5c9_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjktMTAtMS0xLTI4MTA1_15ecf723-6ef5-4950-915a-00f3ad8c3192"
      unitRef="shares">48988142</us-gaap:SharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="i03e1d9770d564a329bb2adabf49fa5c9_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjktMTItMS0xLTI4MTA1_35b6d5eb-8ed6-4001-bdf8-b642a634873c"
      unitRef="usd">6000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="ic6e5ecc99ff04061b9e3f6c3ff14e5a2_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjktMTQtMS0xLTI4MTA1_1e0e4658-a4be-42fb-8c3e-668cfff44d55"
      unitRef="usd">-11434000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="ide4beba748fb40ed8851ccc252f80aeb_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjktMTYtMS0xLTI4MTA1_72202e3b-ad36-4bab-a327-9867180ba95f"
      unitRef="usd">144163000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i3cf506065bd2432495cd72f1681a8bea_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjktMTgtMS0xLTI4MTA1_47e450ad-602f-4199-9c80-a57bb7ee0731"
      unitRef="usd">1000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="ib94b8ea9d39d475c9dad96d49ef7cf59_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjktMjAtMS0xLTI4MTA1_06db0e43-274c-48ce-ad6f-8d8f2d965783"
      unitRef="usd">42691000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjktMjItMS0xLTI4MTA1_c704c23a-8efe-4da9-ace2-96294ae4e425"
      unitRef="usd">175427000</us-gaap:StockholdersEquity>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="ie9d11e1b40894b1b9ed30a2e657b70ff_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjAtMTYtMS0xLTMwMjQx_c5bf30c8-235a-45ec-a99f-d6aaa1b65d83"
      unitRef="usd">15011000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjAtMjItMS0xLTMwMjky_b6d283d6-c149-4b5a-8702-8b32c306064f"
      unitRef="usd">15011000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised
      contextRef="i62771c254e184b3ea5a42172b0543918_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjEtMTAtMS0xLTMwMjQx_81d651e4-5f14-4d9b-ab27-ea0ccee06c75"
      unitRef="shares">2511505</us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="ie9d11e1b40894b1b9ed30a2e657b70ff_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjEtMTYtMS0xLTMwMjQx_fa69bae5-f6c9-49f9-a89c-2a6022bd794e"
      unitRef="usd">5423000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjEtMjItMS0xLTMzMzUx_fc9b9bb2-b93d-4924-abce-b7ea60baae6a"
      unitRef="usd">5423000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:TreasuryStockSharesAcquired
      contextRef="i62771c254e184b3ea5a42172b0543918_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjItMTAtMS0xLTMwMjQx_5ffb4642-8d0f-4439-9351-1a872ca48db8"
      unitRef="shares">1142</us-gaap:TreasuryStockSharesAcquired>
    <us-gaap:TreasuryStockValueAcquiredCostMethod
      contextRef="i9be2d4032f0f4327bb5a0fee4841a0a7_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjItMTQtMS0xLTMwMjQx_358ede8a-25f1-4933-a5d7-fd71b7b8acad"
      unitRef="usd">52000</us-gaap:TreasuryStockValueAcquiredCostMethod>
    <us-gaap:TreasuryStockValueAcquiredCostMethod
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjItMjItMS0xLTMzMzUx_241a29b2-a685-4e4e-835b-77fadf424d9f"
      unitRef="usd">52000</us-gaap:TreasuryStockValueAcquiredCostMethod>
    <us-gaap:StockIssuedDuringPeriodSharesEmployeeStockPurchasePlans
      contextRef="i62771c254e184b3ea5a42172b0543918_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjMtMTAtMS0xLTMwMjQx_6268f8be-7f83-4012-a87e-51b04984cd5d"
      unitRef="shares">276406</us-gaap:StockIssuedDuringPeriodSharesEmployeeStockPurchasePlans>
    <us-gaap:StockIssuedDuringPeriodValueEmployeeStockPurchasePlan
      contextRef="ie9d11e1b40894b1b9ed30a2e657b70ff_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjMtMTYtMS0xLTMwMjQx_992d1b9c-e5ae-4dd0-b449-3c06914b5442"
      unitRef="usd">4804000</us-gaap:StockIssuedDuringPeriodValueEmployeeStockPurchasePlan>
    <us-gaap:StockIssuedDuringPeriodValueEmployeeStockPurchasePlan
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjMtMjItMS0xLTMzMzY1_b474048c-1146-4f5f-a912-b55d1035fe87"
      unitRef="usd">4804000</us-gaap:StockIssuedDuringPeriodValueEmployeeStockPurchasePlan>
    <us-gaap:StockIssuedDuringPeriodSharesRestrictedStockAwardNetOfForfeitures
      contextRef="i62771c254e184b3ea5a42172b0543918_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjQtMTAtMS0xLTMwMjQx_b5f4f0af-67ec-4b43-89e9-dce68fc9d9ae"
      unitRef="shares">79838</us-gaap:StockIssuedDuringPeriodSharesRestrictedStockAwardNetOfForfeitures>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="ice57f3cdf46a49d0b6f078da8795e3f9_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjUtMTgtMS0xLTMwMjQx_a2134676-8124-4af3-a07e-b8e2469f982f"
      unitRef="usd">-37000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjUtMjItMS0xLTMzMzU3_1374fd81-1cee-4750-96cf-b45eb3ce2a0a"
      unitRef="usd">-37000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:NetIncomeLoss
      contextRef="i968ada8404934754a6e8e6daa7ca33ac_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjYtMjAtMS0xLTMwMjQx_8f6ed229-a595-4ea2-98f7-d0c03eb70906"
      unitRef="usd">56604000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjYtMjItMS0xLTMzMzU3_8eeb35b7-27c1-451a-b5b2-d263f4459397"
      unitRef="usd">56604000</us-gaap:NetIncomeLoss>
    <us-gaap:TemporaryEquitySharesOutstanding
      contextRef="ic55d841236bf4456a75c941c3e194d40_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjctMS0xLTEtMzAxNzc_671d0ede-2a73-48cb-89c5-8c2080d26e6d"
      unitRef="shares">0</us-gaap:TemporaryEquitySharesOutstanding>
    <us-gaap:TemporaryEquityCarryingAmountAttributableToParent
      contextRef="ic55d841236bf4456a75c941c3e194d40_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjctMy0xLTEtMzAxNzc_8cf9a4fa-b663-4f98-b8d5-60e6a0020697"
      unitRef="usd">0</us-gaap:TemporaryEquityCarryingAmountAttributableToParent>
    <us-gaap:TemporaryEquitySharesOutstanding
      contextRef="ib7535507430d48df8aa490383b4d3e70_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjctNS0xLTEtMzMzNDg_162c0fd5-a227-4821-be46-9db991f65d3b"
      unitRef="shares">0</us-gaap:TemporaryEquitySharesOutstanding>
    <us-gaap:TemporaryEquityCarryingAmountAttributableToParent
      contextRef="ib7535507430d48df8aa490383b4d3e70_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjctNy0xLTEtMzMzNDg_76abce35-18f3-4945-9f78-10cf42f4b8c8"
      unitRef="usd">0</us-gaap:TemporaryEquityCarryingAmountAttributableToParent>
    <us-gaap:SharesOutstanding
      contextRef="i4f8f7aafe3cc49408c12ee459f52493f_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjctMTAtMS0xLTMzMzQ4_d8a3b1aa-2e8e-4202-9ec0-612ce8ac6fc8"
      unitRef="shares">51854749</us-gaap:SharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="i4f8f7aafe3cc49408c12ee459f52493f_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjctMTItMS0xLTMzMzQ4_d50b4350-4308-427c-9469-8b8f7c44b16c"
      unitRef="usd">6000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i303aef9a74cc46c190bf5fa09f3bb56e_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjctMTQtMS0xLTMzMzQ4_572523a7-22c0-4942-b07a-924ba315116e"
      unitRef="usd">-11486000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i4099a42f17b14e0f84dcd918e82899bc_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjctMTYtMS0xLTMzMzQ4_ed024b09-6dde-49c6-bec6-40ee17ab73c8"
      unitRef="usd">169401000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="ifb72d74f7fd84986a60c11ce0f2dcc44_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjctMTgtMS0xLTMzMzQ4_68b6deb1-caa6-4242-ae3f-a45957f85688"
      unitRef="usd">-36000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="ie0deafe6cb7042a1bbb4dac963ee71e6_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjctMjAtMS0xLTMzMzQ4_fe876b9e-eb87-4ecb-ab72-6ff81b2e7dc1"
      unitRef="usd">99295000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85MS9mcmFnOmQyODAyY2Q1NDE1ZTQ5NzVhMTQxMDJmNGExZjkwOTEyL3RhYmxlOjBmMDE3OWE1YWE0YzQ4YzliZmExMzBlYTI1NmUwZDkyL3RhYmxlcmFuZ2U6MGYwMTc5YTVhYTRjNDhjOWJmYTEzMGVhMjU2ZTBkOTJfMjctMjItMS0xLTMzMzQ4_6a60d53d-dca2-4a8c-be5a-d00915bd7c0d"
      unitRef="usd">257180000</us-gaap:StockholdersEquity>
    <us-gaap:NetIncomeLoss
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfNC0xLTEtMS0yODEwNQ_f8ccb0cb-08a6-42a3-8cc0-61cdffbad9a2"
      unitRef="usd">56604000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfNC0zLTEtMS0yODEwNQ_8cbff8aa-b5e9-4455-a436-23c5c0472eb6"
      unitRef="usd">26613000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfNC01LTEtMS0yODEwNQ_f13d010b-3839-4c5e-a8d2-02e7eb120d10"
      unitRef="usd">6643000</us-gaap:NetIncomeLoss>
    <us-gaap:OtherDepreciationAndAmortization
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfNi0xLTEtMS0yODEwNQ_11dd6341-d2bb-4674-9a67-9eea8d4edced"
      unitRef="usd">23073000</us-gaap:OtherDepreciationAndAmortization>
    <us-gaap:OtherDepreciationAndAmortization
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfNi0zLTEtMS0yODEwNQ_eb164d0d-6aa9-488d-a9a4-36c18fa35833"
      unitRef="usd">15743000</us-gaap:OtherDepreciationAndAmortization>
    <us-gaap:OtherDepreciationAndAmortization
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfNi01LTEtMS0yODEwNQ_73fcabc4-9f86-440f-abb4-aba885ace4dd"
      unitRef="usd">12671000</us-gaap:OtherDepreciationAndAmortization>
    <us-gaap:ImpairmentOfIntangibleAssetsFinitelived
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfNy0xLTEtMS0yODEwNQ_c1297758-1215-4253-bbce-68516b207953"
      unitRef="usd">0</us-gaap:ImpairmentOfIntangibleAssetsFinitelived>
    <us-gaap:ImpairmentOfIntangibleAssetsFinitelived
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfNy0zLTEtMS0yODEwNQ_a3a27816-74c7-43ef-9719-e2ead11e3ccb"
      unitRef="usd">0</us-gaap:ImpairmentOfIntangibleAssetsFinitelived>
    <us-gaap:ImpairmentOfIntangibleAssetsFinitelived
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfNy01LTEtMS0yODEwNQ_afad728f-fa88-42e5-b870-c890228cc485"
      unitRef="usd">702000</us-gaap:ImpairmentOfIntangibleAssetsFinitelived>
    <us-gaap:EquitySecuritiesFvNiUnrealizedGainLoss
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfOC0xLTEtMS0zNTgzMw_72f6386e-fe84-49aa-8322-bff544477e45"
      unitRef="usd">5433000</us-gaap:EquitySecuritiesFvNiUnrealizedGainLoss>
    <us-gaap:EquitySecuritiesFvNiUnrealizedGainLoss
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfOC0zLTEtMS0zNTgzMw_ed94bc84-8407-4cd9-98b8-1a629ebed444"
      unitRef="usd">0</us-gaap:EquitySecuritiesFvNiUnrealizedGainLoss>
    <us-gaap:EquitySecuritiesFvNiUnrealizedGainLoss
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfOC01LTEtMS0zNTgzMw_fd4cdc37-dabf-408a-b283-d71747f19775"
      unitRef="usd">0</us-gaap:EquitySecuritiesFvNiUnrealizedGainLoss>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfOC0xLTEtMS0yODEwNQ_05e04ca4-1d41-4c3c-a439-943f52ce096b"
      unitRef="usd">14107000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfOC0zLTEtMS0yODEwNQ_106e4963-2329-4d21-96ef-0c5e279ad92a"
      unitRef="usd">3563000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfOC01LTEtMS0yODEwNQ_2dd08d8f-b012-47a2-a0f6-626a47489c8b"
      unitRef="usd">2002000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:ProvisionForDoubtfulAccounts
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfOS0xLTEtMS0yODEwNQ_6a2fc9b0-1d2c-44bf-aee4-b23094b4430d"
      unitRef="usd">0</us-gaap:ProvisionForDoubtfulAccounts>
    <us-gaap:ProvisionForDoubtfulAccounts
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfOS0zLTEtMS0yODEwNQ_a0abe433-33a0-4152-a346-ee2ffed31533"
      unitRef="usd">319000</us-gaap:ProvisionForDoubtfulAccounts>
    <us-gaap:ProvisionForDoubtfulAccounts
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfOS01LTEtMS0yODEwNQ_b118f80a-fb51-4560-b7bf-81840f624bdb"
      unitRef="usd">3557000</us-gaap:ProvisionForDoubtfulAccounts>
    <us-gaap:FairValueAdjustmentOfWarrants
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMTAtMS0xLTEtMjgxMDU_823db3d6-c048-4864-a2e2-e4beefea659c"
      unitRef="usd">0</us-gaap:FairValueAdjustmentOfWarrants>
    <us-gaap:FairValueAdjustmentOfWarrants
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMTAtMy0xLTEtMjgxMDU_a0b8577f-4965-4095-ac30-90867f675b3d"
      unitRef="usd">0</us-gaap:FairValueAdjustmentOfWarrants>
    <us-gaap:FairValueAdjustmentOfWarrants
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMTAtNS0xLTEtMjgxMDU_2b49bc56-dd8e-45af-b64d-59fe74e5a9b8"
      unitRef="usd">120000</us-gaap:FairValueAdjustmentOfWarrants>
    <us-gaap:DeferredIncomeTaxExpenseBenefit
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMTEtMS0xLTEtMjgxMDU_7b11774c-6194-4059-bf1a-53348cd85a2a"
      unitRef="usd">4753000</us-gaap:DeferredIncomeTaxExpenseBenefit>
    <us-gaap:DeferredIncomeTaxExpenseBenefit
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMTEtMy0xLTEtMjgxMDU_bcb5491d-72ba-49bd-8a5d-af646c7a6e42"
      unitRef="usd">2933000</us-gaap:DeferredIncomeTaxExpenseBenefit>
    <us-gaap:DeferredIncomeTaxExpenseBenefit
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMTEtNS0xLTEtMjgxMDU_27c6ae6c-21f8-4bfc-82cc-70c2e1bf5bfe"
      unitRef="usd">193000</us-gaap:DeferredIncomeTaxExpenseBenefit>
    <us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMTItMS0xLTEtMjgxMDU_4ebbf538-6937-4a0d-b895-534bdd42e48b"
      unitRef="usd">45000</us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments>
    <us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMTItMy0xLTEtMjgxMDU_056978f2-30ef-4814-a216-d9c47544c1b1"
      unitRef="usd">145000</us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments>
    <us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMTItNS0xLTEtMjgxMDU_ec9950bc-0332-4be8-be43-8dde7feb93c2"
      unitRef="usd">341000</us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments>
    <pubm:NonCashLeaseExpense
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMTQtMS0xLTEtNDAwNjQ_2eba71ff-7842-4883-87ed-40f0e58c652a"
      unitRef="usd">2042000</pubm:NonCashLeaseExpense>
    <pubm:NonCashLeaseExpense
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMTQtMy0xLTEtNDAwNjQ_444b7d43-1285-43a2-9c57-17999c1ff14b"
      unitRef="usd">0</pubm:NonCashLeaseExpense>
    <pubm:NonCashLeaseExpense
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMTQtNS0xLTEtNDAwNjQ_bb560f5a-6e90-470d-83a6-05ae7794ccde"
      unitRef="usd">0</pubm:NonCashLeaseExpense>
    <us-gaap:OtherNoncashIncomeExpense
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMTMtMS0xLTEtMjgxMDU_255d216e-6635-41f2-8ee0-9cfcf9c9a638"
      unitRef="usd">-45000</us-gaap:OtherNoncashIncomeExpense>
    <us-gaap:OtherNoncashIncomeExpense
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMTMtMy0xLTEtMjgxMDU_02f45a08-0f11-4218-b46d-a9b5c666865b"
      unitRef="usd">-189000</us-gaap:OtherNoncashIncomeExpense>
    <us-gaap:OtherNoncashIncomeExpense
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMTMtNS0xLTEtMjgxMDU_25846a98-fd47-4b9c-8ebd-ed69e87ba5f0"
      unitRef="usd">-19000</us-gaap:OtherNoncashIncomeExpense>
    <us-gaap:IncreaseDecreaseInAccountsReceivable
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMTUtMS0xLTEtMjgxMDU_44e37443-86a6-4e8d-9dcf-808606efd7a1"
      unitRef="usd">67405000</us-gaap:IncreaseDecreaseInAccountsReceivable>
    <us-gaap:IncreaseDecreaseInAccountsReceivable
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMTUtMy0xLTEtMjgxMDU_8abb298b-721c-4cbe-ae21-7a4bf9ccd9c5"
      unitRef="usd">102175000</us-gaap:IncreaseDecreaseInAccountsReceivable>
    <us-gaap:IncreaseDecreaseInAccountsReceivable
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMTUtNS0xLTEtMjgxMDU_70a83482-3c48-4c89-9bfb-2af0c76aeca8"
      unitRef="usd">11919000</us-gaap:IncreaseDecreaseInAccountsReceivable>
    <us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMTYtMS0xLTEtMjgxMDU_b327851c-5edb-49bd-97a0-dbd17fd93d8b"
      unitRef="usd">7681000</us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets>
    <us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMTYtMy0xLTEtMjgxMDU_905019f0-7c7c-45b3-b541-ea1798bc360e"
      unitRef="usd">2801000</us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets>
    <us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMTYtNS0xLTEtMjgxMDU_7c5ebcfc-a609-4ec0-a64a-370102ea0c52"
      unitRef="usd">-618000</us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets>
    <us-gaap:IncreaseDecreaseInAccountsPayable
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMTctMS0xLTEtMjgxMDU_1870ec3f-3622-4019-a922-5b00dbcd00db"
      unitRef="usd">68301000</us-gaap:IncreaseDecreaseInAccountsPayable>
    <us-gaap:IncreaseDecreaseInAccountsPayable
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMTctMy0xLTEtMjgxMDU_41ec9a01-171f-465b-ab84-4c4a2726bfe5"
      unitRef="usd">77357000</us-gaap:IncreaseDecreaseInAccountsPayable>
    <us-gaap:IncreaseDecreaseInAccountsPayable
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMTctNS0xLTEtMjgxMDU_007cffb4-0558-4385-a892-daf2d6f0d289"
      unitRef="usd">18465000</us-gaap:IncreaseDecreaseInAccountsPayable>
    <us-gaap:IncreaseDecreaseInAccruedLiabilities
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMTgtMS0xLTEtMjgxMDU_f2992943-8426-499d-a4ef-1dbe5f310621"
      unitRef="usd">3530000</us-gaap:IncreaseDecreaseInAccruedLiabilities>
    <us-gaap:IncreaseDecreaseInAccruedLiabilities
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMTgtMy0xLTEtMjgxMDU_d0ece764-d6d5-486e-8895-ea8827edd336"
      unitRef="usd">3452000</us-gaap:IncreaseDecreaseInAccruedLiabilities>
    <us-gaap:IncreaseDecreaseInAccruedLiabilities
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMTgtNS0xLTEtMjgxMDU_d288d86d-9580-4949-93f7-01e56fe91444"
      unitRef="usd">2011000</us-gaap:IncreaseDecreaseInAccruedLiabilities>
    <us-gaap:IncreaseDecreaseInOperatingLeaseLiability
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMjEtMS0xLTEtNDAwNzM_c8f8ff22-90f7-435c-9807-423aeef936ee"
      unitRef="usd">-2283000</us-gaap:IncreaseDecreaseInOperatingLeaseLiability>
    <us-gaap:IncreaseDecreaseInOperatingLeaseLiability
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMjEtMy0xLTEtNDAwNzM_7e0b0f5e-091f-40b9-b684-f79c68d42e22"
      unitRef="usd">0</us-gaap:IncreaseDecreaseInOperatingLeaseLiability>
    <us-gaap:IncreaseDecreaseInOperatingLeaseLiability
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMjEtNS0xLTEtNDAwNzM_01642cf1-f413-494a-b333-aabc90052c18"
      unitRef="usd">0</us-gaap:IncreaseDecreaseInOperatingLeaseLiability>
    <us-gaap:IncreaseDecreaseInOtherNoncurrentLiabilities
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMTktMS0xLTEtMjgxMDU_64fb592d-69e4-4ba4-a7ef-4459e042c2d4"
      unitRef="usd">-927000</us-gaap:IncreaseDecreaseInOtherNoncurrentLiabilities>
    <us-gaap:IncreaseDecreaseInOtherNoncurrentLiabilities
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMTktMy0xLTEtMjgxMDU_e543a4a7-a2f2-4bad-b5f3-80a1d22946af"
      unitRef="usd">-718000</us-gaap:IncreaseDecreaseInOtherNoncurrentLiabilities>
    <us-gaap:IncreaseDecreaseInOtherNoncurrentLiabilities
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMTktNS0xLTEtMjgxMDU_aed95452-8d57-496e-8e79-3eaee054c6bd"
      unitRef="usd">384000</us-gaap:IncreaseDecreaseInOtherNoncurrentLiabilities>
    <us-gaap:NetCashProvidedByUsedInOperatingActivities
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMjAtMS0xLTEtMjgxMDU_f6340d34-9009-48de-97a6-748892f95308"
      unitRef="usd">88681000</us-gaap:NetCashProvidedByUsedInOperatingActivities>
    <us-gaap:NetCashProvidedByUsedInOperatingActivities
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMjAtMy0xLTEtMjgxMDU_0aa0ab10-8bb8-4c00-8360-abe8c4e9c9c9"
      unitRef="usd">24330000</us-gaap:NetCashProvidedByUsedInOperatingActivities>
    <us-gaap:NetCashProvidedByUsedInOperatingActivities
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMjAtNS0xLTEtMjgxMDU_12657da6-092e-4647-9fdf-3e8e9f8f42d7"
      unitRef="usd">35125000</us-gaap:NetCashProvidedByUsedInOperatingActivities>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMjItMS0xLTEtMjgxMDU_65833b76-5c1e-4141-abd4-d84055b35484"
      unitRef="usd">30432000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMjItMy0xLTEtMjgxMDU_7c23cebc-783a-4163-b2c0-c7849ee155fa"
      unitRef="usd">24177000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMjItNS0xLTEtMjgxMDU_b9888e31-0e8c-4ad6-818f-be7ebf5a3a17"
      unitRef="usd">9553000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToDevelopSoftware
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMjMtMS0xLTEtMjgxMDU_054301d8-c279-415d-898a-d83f8f92fab1"
      unitRef="usd">8929000</us-gaap:PaymentsToDevelopSoftware>
    <us-gaap:PaymentsToDevelopSoftware
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMjMtMy0xLTEtMjgxMDU_cbfb6cd8-4ab9-4f38-a7dd-fb5b0113592b"
      unitRef="usd">7226000</us-gaap:PaymentsToDevelopSoftware>
    <us-gaap:PaymentsToDevelopSoftware
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMjMtNS0xLTEtMjgxMDU_787a995b-0252-44fb-9341-999a01cba77a"
      unitRef="usd">5442000</us-gaap:PaymentsToDevelopSoftware>
    <us-gaap:PaymentsToAcquireMarketableSecurities
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMjQtMS0xLTEtMjgxMDU_2ccce768-814e-42c0-9be2-06ac9717f79f"
      unitRef="usd">90562000</us-gaap:PaymentsToAcquireMarketableSecurities>
    <us-gaap:PaymentsToAcquireMarketableSecurities
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMjQtMy0xLTEtMjgxMDU_678f38d0-eda9-450d-8271-a9ee299c925f"
      unitRef="usd">36704000</us-gaap:PaymentsToAcquireMarketableSecurities>
    <us-gaap:PaymentsToAcquireMarketableSecurities
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMjQtNS0xLTEtMjgxMDU_986b9da8-b47b-4e16-b249-2e6d5924371c"
      unitRef="usd">37545000</us-gaap:PaymentsToAcquireMarketableSecurities>
    <us-gaap:ProceedsFromSaleOfHeldToMaturitySecurities
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMjUtMS0xLTEtMjgxMDU_358297c9-41d1-46b9-8cc4-444cc70fb876"
      unitRef="usd">0</us-gaap:ProceedsFromSaleOfHeldToMaturitySecurities>
    <us-gaap:ProceedsFromSaleOfHeldToMaturitySecurities
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMjUtMy0xLTEtMjgxMDU_2328f1ca-3942-4ed8-b3eb-ebc81c0856ca"
      unitRef="usd">2295000</us-gaap:ProceedsFromSaleOfHeldToMaturitySecurities>
    <us-gaap:ProceedsFromSaleOfHeldToMaturitySecurities
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMjUtNS0xLTEtMjgxMDU_c8450ce0-9777-4b2c-ae44-d679aabb4bf6"
      unitRef="usd">696000</us-gaap:ProceedsFromSaleOfHeldToMaturitySecurities>
    <us-gaap:ProceedsFromSaleAndMaturityOfMarketableSecurities
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMjYtMS0xLTEtMjgxMDU_87e8418e-d7b8-42ec-b1b7-7afa806a8d89"
      unitRef="usd">33200000</us-gaap:ProceedsFromSaleAndMaturityOfMarketableSecurities>
    <us-gaap:ProceedsFromSaleAndMaturityOfMarketableSecurities
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMjYtMy0xLTEtMjgxMDU_c05e5ce9-2192-4207-a014-b4cc9bbe18a2"
      unitRef="usd">35950000</us-gaap:ProceedsFromSaleAndMaturityOfMarketableSecurities>
    <us-gaap:ProceedsFromSaleAndMaturityOfMarketableSecurities
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMjYtNS0xLTEtMjgxMDU_f7b77e28-64ac-4c93-b837-9b331bca76fb"
      unitRef="usd">30255000</us-gaap:ProceedsFromSaleAndMaturityOfMarketableSecurities>
    <us-gaap:PaymentsToAcquireEquitySecuritiesFvNi
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMjctMS0xLTEtMjgxMDU_98cc0b2d-78cb-4a05-b4df-1c1d849a41bd"
      unitRef="usd">0</us-gaap:PaymentsToAcquireEquitySecuritiesFvNi>
    <us-gaap:PaymentsToAcquireEquitySecuritiesFvNi
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMjctMy0xLTEtMjgxMDU_01e739e5-2cc2-40cf-a3ba-068cef64b31c"
      unitRef="usd">15000</us-gaap:PaymentsToAcquireEquitySecuritiesFvNi>
    <us-gaap:PaymentsToAcquireEquitySecuritiesFvNi
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMjctNS0xLTEtMjgxMDU_fd7466a8-ec35-44ea-9e7e-044085a45328"
      unitRef="usd">500000</us-gaap:PaymentsToAcquireEquitySecuritiesFvNi>
    <us-gaap:NetCashProvidedByUsedInInvestingActivities
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMjgtMS0xLTEtMjgxMDU_c0bbc00e-5e34-424e-80f5-581130cfdc76"
      unitRef="usd">-96723000</us-gaap:NetCashProvidedByUsedInInvestingActivities>
    <us-gaap:NetCashProvidedByUsedInInvestingActivities
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMjgtMy0xLTEtMjgxMDU_faf07adf-f29c-4286-b810-824937178c86"
      unitRef="usd">-29877000</us-gaap:NetCashProvidedByUsedInInvestingActivities>
    <us-gaap:NetCashProvidedByUsedInInvestingActivities
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMjgtNS0xLTEtMjgxMDU_81d2a316-1a60-41fd-b4b0-57feb98b4f84"
      unitRef="usd">-22089000</us-gaap:NetCashProvidedByUsedInInvestingActivities>
    <us-gaap:ProceedsFromIssuanceInitialPublicOffering
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMzAtMS0xLTEtMjgxMDU_12d8e9cd-fa59-4d4c-9b28-6affb95117f0"
      unitRef="usd">-806000</us-gaap:ProceedsFromIssuanceInitialPublicOffering>
    <us-gaap:ProceedsFromIssuanceInitialPublicOffering
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMzAtMy0xLTEtMjgxMDU_91eb6b56-ba49-4dfb-b6c7-fdd8a97c5d8a"
      unitRef="usd">45811000</us-gaap:ProceedsFromIssuanceInitialPublicOffering>
    <us-gaap:ProceedsFromIssuanceInitialPublicOffering
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMzAtNS0xLTEtMjgxMDU_9b1efb3c-1b59-455a-bdcc-bf4033e91b93"
      unitRef="usd">0</us-gaap:ProceedsFromIssuanceInitialPublicOffering>
    <pubm:ProceedsFromRepaymentsOfStockholdersNotesReceivable
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMzMtMS0xLTEtMjgxMDU_3bfd2eb5-34ba-487f-b1de-fc6486f0a4d7"
      unitRef="usd">0</pubm:ProceedsFromRepaymentsOfStockholdersNotesReceivable>
    <pubm:ProceedsFromRepaymentsOfStockholdersNotesReceivable
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMzMtMy0xLTEtMjgxMDU_b2349267-37aa-42d5-afd1-09d97aa80134"
      unitRef="usd">4268000</pubm:ProceedsFromRepaymentsOfStockholdersNotesReceivable>
    <pubm:ProceedsFromRepaymentsOfStockholdersNotesReceivable
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMzMtNS0xLTEtMjgxMDU_f7a82623-ee70-4aaa-a8e3-9e8b8f97a4c9"
      unitRef="usd">0</pubm:ProceedsFromRepaymentsOfStockholdersNotesReceivable>
    <us-gaap:ProceedsFromStockPlans
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMzItMS0xLTEtMzAzOTE_0353df09-35ec-4657-a24e-e0ac4da66a86"
      unitRef="usd">4804000</us-gaap:ProceedsFromStockPlans>
    <us-gaap:ProceedsFromStockPlans
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMzItMy0xLTEtMzAzOTE_6f57d753-8076-42eb-a71f-d8bb607bee5d"
      unitRef="usd">0</us-gaap:ProceedsFromStockPlans>
    <us-gaap:ProceedsFromStockPlans
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMzItNS0xLTEtMzAzOTE_5bb755b6-5e50-4348-b03a-e454bd199638"
      unitRef="usd">0</us-gaap:ProceedsFromStockPlans>
    <us-gaap:ProceedsFromStockOptionsExercised
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMzQtMS0xLTEtMjgxMDU_9f1b0f3f-d2bb-4c4c-806f-82f92cc47bce"
      unitRef="usd">5423000</us-gaap:ProceedsFromStockOptionsExercised>
    <us-gaap:ProceedsFromStockOptionsExercised
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMzQtMy0xLTEtMjgxMDU_a912753d-d530-4dac-989c-895c6e37341d"
      unitRef="usd">2409000</us-gaap:ProceedsFromStockOptionsExercised>
    <us-gaap:ProceedsFromStockOptionsExercised
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMzQtNS0xLTEtMjgxMDU_a9a9d15d-e7e6-4062-a183-989d0d195dac"
      unitRef="usd">4000</us-gaap:ProceedsFromStockOptionsExercised>
    <pubm:PaymentsForCancelationOfStockOptions
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMzYtMS0xLTEtNDAyNTY_29146dfb-4994-4406-9c5f-d8c1035957ce"
      unitRef="usd">10000</pubm:PaymentsForCancelationOfStockOptions>
    <pubm:PaymentsForCancelationOfStockOptions
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMzYtMy0xLTEtNDAyNTY_32a73095-a335-473b-8555-87f8094748d8"
      unitRef="usd">0</pubm:PaymentsForCancelationOfStockOptions>
    <pubm:PaymentsForCancelationOfStockOptions
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMzYtNS0xLTEtNDAyNTY_200eee15-0523-461e-bb1d-2afce8efe9d2"
      unitRef="usd">0</pubm:PaymentsForCancelationOfStockOptions>
    <us-gaap:PaymentsForRepurchaseOfCommonStock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMzYtMS0xLTEtMjgxMDU_e698686d-ad0e-4a08-b69e-d3230b27b719"
      unitRef="usd">52000</us-gaap:PaymentsForRepurchaseOfCommonStock>
    <us-gaap:PaymentsForRepurchaseOfCommonStock
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMzYtMy0xLTEtMjgxMDU_858ea2fa-0ff3-401e-a6fb-ef1cf9f6ffbe"
      unitRef="usd">3000</us-gaap:PaymentsForRepurchaseOfCommonStock>
    <us-gaap:PaymentsForRepurchaseOfCommonStock
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMzYtNS0xLTEtMjgxMDU_0f4ffde8-fb6f-424e-8753-c09771992634"
      unitRef="usd">5000</us-gaap:PaymentsForRepurchaseOfCommonStock>
    <us-gaap:NetCashProvidedByUsedInFinancingActivities
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMzctMS0xLTEtMjgxMDU_0f79bdb9-eadd-428e-ac72-b6d521b16c58"
      unitRef="usd">9359000</us-gaap:NetCashProvidedByUsedInFinancingActivities>
    <us-gaap:NetCashProvidedByUsedInFinancingActivities
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMzctMy0xLTEtMjgxMDU_9d744f9f-aea0-4e2e-8974-1f7cfd86840e"
      unitRef="usd">52485000</us-gaap:NetCashProvidedByUsedInFinancingActivities>
    <us-gaap:NetCashProvidedByUsedInFinancingActivities
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMzctNS0xLTEtMjgxMDU_09e8d113-5c06-4ff3-89bc-8745d2bfbd19"
      unitRef="usd">-1000</us-gaap:NetCashProvidedByUsedInFinancingActivities>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMzgtMS0xLTEtMjgxMDU_f4d597ff-0e8a-4ffc-b6ca-7f2ad7b3b7e2"
      unitRef="usd">1317000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMzgtMy0xLTEtMjgxMDU_7f593295-c73d-4454-81c7-201984dce1ae"
      unitRef="usd">46938000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMzgtNS0xLTEtMjgxMDU_91f7e923-1b08-489b-b919-06a6a0ac5a8c"
      unitRef="usd">13035000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMzktMS0xLTEtMjgxMDU_24dca82b-fb98-41e8-9b9f-72db85e006e5"
      unitRef="usd">81188000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="ibcf318f535e34e548d6a7a49e392f2cd_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMzktMy0xLTEtMjgxMDU_5e28f70a-1f05-436d-b7db-cfd393417231"
      unitRef="usd">34250000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="ief144f96c0df4282b351b86950ec96f1_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfMzktNS0xLTEtMjgxMDU_87ca5a99-2f28-4135-b9c5-bbff4f05bf2a"
      unitRef="usd">21215000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfNDAtMS0xLTEtMjgxMDU_227d3b40-aed3-4954-a2fd-da9d99c24ea7"
      unitRef="usd">82505000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfNDAtMy0xLTEtMjgxMDU_e5ae44ac-45b8-4f56-abd8-d70674315e1b"
      unitRef="usd">81188000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="ibcf318f535e34e548d6a7a49e392f2cd_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfNDAtNS0xLTEtMjgxMDU_89c7a136-5538-4ede-996e-11ca20142a49"
      unitRef="usd">34250000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:IncomeTaxesPaidNet
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfNDItMS0xLTEtMjgxMDU_fc01fbb3-7393-41a9-a6da-debd776a1213"
      unitRef="usd">6786000</us-gaap:IncomeTaxesPaidNet>
    <us-gaap:IncomeTaxesPaidNet
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfNDItMy0xLTEtMjgxMDU_8a7dc624-90b7-473e-8256-31f54bc8d76b"
      unitRef="usd">2691000</us-gaap:IncomeTaxesPaidNet>
    <us-gaap:IncomeTaxesPaidNet
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfNDItNS0xLTEtMjgxMDU_e5fca41a-2988-4681-accb-f9e649caa465"
      unitRef="usd">3016000</us-gaap:IncomeTaxesPaidNet>
    <pubm:StockBasedCompensationCapitalizedAsInternalUseSoftwareCosts
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfNDQtMS0xLTEtMjgxMDU_5495c1c3-e0cf-4f83-ab07-3c939524e28f"
      unitRef="usd">903000</pubm:StockBasedCompensationCapitalizedAsInternalUseSoftwareCosts>
    <pubm:StockBasedCompensationCapitalizedAsInternalUseSoftwareCosts
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfNDQtMy0xLTEtMjgxMDU_93201622-9653-4797-b0b1-d19b4b4c5fe8"
      unitRef="usd">40000</pubm:StockBasedCompensationCapitalizedAsInternalUseSoftwareCosts>
    <pubm:StockBasedCompensationCapitalizedAsInternalUseSoftwareCosts
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfNDQtNS0xLTEtMjgxMDU_da89ae68-d2ba-4e15-ba74-dd32a3ea4c2d"
      unitRef="usd">20000</pubm:StockBasedCompensationCapitalizedAsInternalUseSoftwareCosts>
    <pubm:PropertyAndEquipmentIncludedInAccountsPayableAndAccruedExpenses
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfNDUtMS0xLTEtMjgxMDU_78fda3ce-212b-4810-91dc-dfcd24cc0172"
      unitRef="usd">49000</pubm:PropertyAndEquipmentIncludedInAccountsPayableAndAccruedExpenses>
    <pubm:PropertyAndEquipmentIncludedInAccountsPayableAndAccruedExpenses
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfNDUtMy0xLTEtMjgxMDU_63bab477-73ea-4c70-bd9e-56e6eb86200c"
      unitRef="usd">111000</pubm:PropertyAndEquipmentIncludedInAccountsPayableAndAccruedExpenses>
    <pubm:PropertyAndEquipmentIncludedInAccountsPayableAndAccruedExpenses
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfNDUtNS0xLTEtMjgxMDU_e3ee2287-2f4e-4f00-8668-c9c76558f277"
      unitRef="usd">770000</pubm:PropertyAndEquipmentIncludedInAccountsPayableAndAccruedExpenses>
    <us-gaap:CapitalExpendituresIncurredButNotYetPaid
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfNDYtMS0xLTEtMjgxMDU_c8829372-7f95-41f4-ba34-5e6e42c32f91"
      unitRef="usd">1794000</us-gaap:CapitalExpendituresIncurredButNotYetPaid>
    <us-gaap:CapitalExpendituresIncurredButNotYetPaid
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfNDYtMy0xLTEtMjgxMDU_c3d012e2-9d8d-47b4-85dc-c44958a56ab0"
      unitRef="usd">1336000</us-gaap:CapitalExpendituresIncurredButNotYetPaid>
    <us-gaap:CapitalExpendituresIncurredButNotYetPaid
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfNDYtNS0xLTEtMjgxMDU_8682862f-be90-4d11-a5c5-c23125092150"
      unitRef="usd">1214000</us-gaap:CapitalExpendituresIncurredButNotYetPaid>
    <pubm:TemporaryEquityValueCashlessExerciseOfPreferredStockWarrants
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfNDctMS0xLTEtMjgxMDU_b013ee10-cad9-46f8-917e-199b928817f8"
      unitRef="usd">0</pubm:TemporaryEquityValueCashlessExerciseOfPreferredStockWarrants>
    <pubm:TemporaryEquityValueCashlessExerciseOfPreferredStockWarrants
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfNDctMy0xLTEtMjgxMDU_27c99926-d3ae-425a-93db-e94843425898"
      unitRef="usd">0</pubm:TemporaryEquityValueCashlessExerciseOfPreferredStockWarrants>
    <pubm:TemporaryEquityValueCashlessExerciseOfPreferredStockWarrants
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfNDctNS0xLTEtMjgxMDU_9be6bb17-e3dd-4840-a948-8e3a205d77b2"
      unitRef="usd">396000</pubm:TemporaryEquityValueCashlessExerciseOfPreferredStockWarrants>
    <pubm:DeferredOfferingCostsIncurredDuringThePeriodIncludedInAccountsPayableAndAccruedExpenses
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfNDgtMS0xLTEtMjgxMDU_8f2222d3-91a3-4e57-9260-e9765153abaa"
      unitRef="usd">0</pubm:DeferredOfferingCostsIncurredDuringThePeriodIncludedInAccountsPayableAndAccruedExpenses>
    <pubm:DeferredOfferingCostsIncurredDuringThePeriodIncludedInAccountsPayableAndAccruedExpenses
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfNDgtMy0xLTEtMjgxMDU_4744cec7-a4bb-4c31-99f9-f0fd4995eba9"
      unitRef="usd">806000</pubm:DeferredOfferingCostsIncurredDuringThePeriodIncludedInAccountsPayableAndAccruedExpenses>
    <pubm:DeferredOfferingCostsIncurredDuringThePeriodIncludedInAccountsPayableAndAccruedExpenses
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl85NC9mcmFnOjkzY2MzOTViMDk2OTQ3ZmE5ZGYwZTMyOTQ3NGEzZTJjL3RhYmxlOjQzNWVmY2Y1YWExODQzMDNiNDU3ZjZkYjgwZDEwMTIxL3RhYmxlcmFuZ2U6NDM1ZWZjZjVhYTE4NDMwM2I0NTdmNmRiODBkMTAxMjFfNDgtNS0xLTEtMjgxMDU_c495d420-fab3-448a-b8f4-6dcf6d837d47"
      unitRef="usd">0</pubm:DeferredOfferingCostsIncurredDuringThePeriodIncludedInAccountsPayableAndAccruedExpenses>
    <us-gaap:NatureOfOperations
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDAvZnJhZzpkNjM2OWFlMjBkYWU0YmI3YTVmNjJhMDYxNTg4ZmEwYy90ZXh0cmVnaW9uOmQ2MzY5YWUyMGRhZTRiYjdhNWY2MmEwNjE1ODhmYTBjXzYyMw_087176a4-35f5-438e-aa12-348f2ae3487f">Organization and Description of BusinessPubMatic, Inc. and subsidiaries (&#x201c;Company&#x201d; or &#x201c;PubMatic&#x201d;) was founded in 2006.</us-gaap:NatureOfOperations>
    <us-gaap:BasisOfPresentationAndSignificantAccountingPoliciesTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90ZXh0cmVnaW9uOjJlYzdmZDRmY2M5ZDRlNThiMWU5NjQ5YmE5ZmM0Y2UzXzI4NTU0_6139a117-1459-42a6-adea-8b7bd3514484">Basis of Presentation and Summary of Significant Accounting Policies&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Fiscal Year&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company&#x2019;s fiscal year ends on December 31. References to fiscal year 2021, for example, refer to the fiscal year ended December&#160;31, 2021.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Basis of Presentation&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The accompanying consolidated financial statements have been prepared in accordance with generally accepted accounting principles in the United States of America (&#x201c;GAAP&#x201d;). The accompanying consolidated financial statements include the accounts of PubMatic, Inc. and its wholly-owned subsidiaries. All intercompany accounts and transactions have been eliminated in consolidation.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Use of Estimates&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The preparation of the consolidated financial statements in conformity with GAAP requires management to make estimates and assumptions that affect the amounts of assets and liabilities reported, disclosures about contingent assets and liabilities, and reported amounts of revenue and expenses.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Significant items subject to such estimates include: revenue recognition criteria, including the determination of revenue reporting as net versus gross in the Company&#x2019;s revenue arrangements, internal use software development costs, stock-based compensation, and income taxes, including the valuation reserve on deferred tax assets. The Company evaluates its estimates and assumptions on an ongoing basis using historical experience and other factors and adjusts those estimates and assumptions when facts and circumstances dictate. Actual results could materially differ from those estimates and assumptions. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.5pt;text-indent:18pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Due to the inherent uncertainty involved in making assumptions and estimates, events and changes in circumstances arising after December&#160;31, 2021, including those resulting from the impacts of the COVID-19 pandemic, may result in actual outcomes that differ from those contemplated by the Company&#x2019;s assumptions and estimates. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Concentration of Credit Risk&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Financial instruments that potentially subject the Company to concentration of credit risk consist principally of cash and cash equivalents, marketable securities, and accounts receivable. The Company maintains its cash and cash equivalents with financial institutions in amounts which exceed Federal Deposit Insurance Corporation limits.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company&#x2019;s investment policy limits investments to certain types of securities issued by the U.S. government and its agencies and institutions with investment-grade credit ratings and places restrictions on &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;maturities and concentration by type and issuer. The primary objective of its investment activities is to preserve principal while maximizing income without significantly increasing risk.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Cash and Cash Equivalents&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company considers all highly liquid investments with an original maturity at the date of purchase of three months or less to be cash equivalents.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Marketable Securities&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company classifies marketable securities as available-for-sale at the time of purchase and reevaluates such classification at each balance sheet date. The Company may sell these securities at any time for use in current operations even if they have not yet reached maturity. As a result, the Company classifies its marketable securities, including those with maturities beyond twelve months, as current assets in the consolidated balance sheets. These marketable securities are carried at fair value and unrealized gains and losses are recorded in other comprehensive income, which is reflected as a component of stockholders&#x2019; equity. These marketable securities are assessed as to whether those with unrealized loss positions are other than temporarily impaired. The Company considers impairments to be other than temporary if they are related to deterioration in credit risk or if it is likely the securities will be sold before the recovery of their cost basis. Realized gains and losses from the sale of marketable securities and declines in value deemed to be other than temporary are determined based on the specific identification method. Realized gains and losses, and any expected credit losses, are reported in other income (expense), net in the consolidated statements of operations and comprehensive income.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Fair Value of Financial Instruments&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Financial instruments consist of cash equivalents, marketable securities, accounts receivable, equity investment, accounts payable, and accrued liabilities. Cash equivalents, marketable securities and equity investment are remeasured at fair value at the end of every period. Accounts receivable, accounts payable and accrued liabilities are stated at their carrying value, which approximates fair value due to the short time to the expected receipt or payment.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Accounts Receivable and Allowance for Credit Losses (formerly Allowance for Doubtful Accounts)&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Accounts receivable are recorded at the invoiced amount, are unsecured, and do not bear interest. The allowance for credit losses is based on the best estimate of the amount of probable credit losses in existing accounts receivable. The allowance for credit losses is determined based on historical collection experience and the review in each period of the status of the then outstanding accounts receivable, while taking into consideration current customer information, collection history, and other relevant data. The Company reviews the allowance for credit losses on a quarterly basis. Account balances are written off against the allowance when the Company believes it is probable the receivable will not be recovered. The following table presents the changes in the allowance for credit losses (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.5pt;text-indent:18pt"&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:55.791%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.842%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.842%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.843%"/&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="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;December 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="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&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 2px 10pt;text-align:left;text-indent:-9pt;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Allowance for credit losses, beginning balance&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;1,989&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2,051&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;1,784&#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 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Provision&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;319&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;3,557&#160;&lt;/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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Write-offs&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:120%"&gt;(224)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;(381)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;(3,290)&lt;/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 10pt;text-align:left;text-indent:-9pt;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Allowance for credit losses, ending balance&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 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;1,765&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;1,989&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2,051&#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-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Property and Equipment&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Property and equipment, including leasehold improvements, are stated at cost, less accumulated depreciation and amortization. Depreciation is computed using the straight-line method over the estimated useful &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;lives of the related assets, generally three years. Leasehold improvements are amortized on a straight-line basis over the shorter of the estimated useful lives of the assets or the remaining lease term.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Internal Use Software Development Costs&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company capitalizes certain internal use software development costs associated with creating and enhancing internal use software related to its platform and technology infrastructure. These costs include personnel and related employee benefits expenses for employees who are directly associated with and who devote time to software projects, and external direct costs of materials and services consumed in developing or obtaining the software. Software development costs that do not meet the criteria for capitalization are expensed as incurred and recorded in technology and development expenses in the consolidated statements of operations and comprehensive income.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Software development activities generally consist of three stages, (i) the planning stage, (ii) the application and infrastructure development stage, and (iii) the post implementation stage. Costs incurred in the planning and post implementation stages of software development, including costs associated with the post configuration training and repairs and maintenance of the developed technologies, are expensed as incurred. The Company capitalizes costs associated with software developed for internal use when both the preliminary project stage is completed and management has authorized further funding for the completion of the project. Costs incurred in the application and infrastructure development stages, including significant enhancements and upgrades, are capitalized. Capitalization ends once a project is substantially complete and the software and technologies are ready for their intended purpose. Internal use software development costs are amortized using a straight-line method over the estimated useful life of &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90ZXh0cmVnaW9uOjJlYzdmZDRmY2M5ZDRlNThiMWU5NjQ5YmE5ZmM0Y2UzXzEwOTk1MTE3MjQ3MTE_553e6439-f5e8-4552-9592-20ef34d0c37d"&gt;two&lt;/span&gt; to five years, commencing when the software is ready for its intended use.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Impairment of Long-Lived Assets&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company continually monitors events and changes in circumstances that could indicate that carrying amounts of its long-lived assets, including property and equipment and intangible assets may not be recoverable. When such events or changes in circumstances occur, the Company assesses the recoverability of long-lived assets by determining whether the carrying value of such assets will be recovered through their undiscounted expected future cash flows. If the future undiscounted cash flows are less than the carrying value of these assets, the Company recognizes an impairment loss based on the excess of the carrying value over the fair value of the assets. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Goodwill&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Goodwill represents the excess of the aggregate fair value of the consideration transferred in a business combination over the fair value of the assets acquired, net of liabilities assumed. The Company tests for impairment of goodwill annually during the fourth quarter or more frequently if events or changes in circumstances indicate that the goodwill may be impaired.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Events or changes in circumstances which could trigger an impairment review include a significant adverse change in legal factors or in the business climate, an adverse action or assessment by a regulator, unanticipated competition, a loss of key personnel, significant changes in the manner of the Company&#x2019;s use of the acquired assets, or the strategy for the Company&#x2019;s overall business, significant negative industry or economic trends, or significant underperformance relative to expected historical or projected future results of operations. The Company has not recorded any goodwill impairment to date.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Equity Investment&lt;/span&gt;&lt;/div&gt;&lt;div style="text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Prior to December 2021, the Company accounted for investment in non-marketable equity securities that it does not exercise significant influence using the measurement alternative in accordance with Accounting Standards Update 2016-01. Under the measurement alternative, the carrying value is measured at cost, less any impairment, plus or minus changes resulting from observable price changes in orderly transactions for identical or similar investments of the same issuer. Adjustments are determined primarily based on a market approach as of the &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;transaction date. During December 2021, an observable transaction occurred for such investment driven by a merger with a company registered with the U.S. Securities and Exchange Commission (SEC) and determined to have an active market. Therefore, the investment has readily determinable and observable fair value as of December&#160;31, 2021 with realized and unrealized gains and losses included in Other (income) expense, net. The Company classifies its equity investment as Other assets, non-current on the Consolidated Balance Sheets.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-indent:36pt"&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Revenue Recognition&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company recognizes revenue through the following steps:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;padding-left:72pt;text-indent:-18pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#x2022;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:14.5pt"&gt;&#160;Identification of a contract with a customer;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;padding-left:72pt;text-indent:-18pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#x2022;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:14.5pt"&gt;Identification of the performance obligations in the contract;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;padding-left:72pt;text-indent:-18pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#x2022;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:14.5pt"&gt;Determination of the transaction price;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;padding-left:72pt;text-indent:-18pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#x2022;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:14.5pt"&gt;Allocation of the transaction price to the performance obligations in the contract; and&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;padding-left:72pt;text-indent:-18pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#x2022;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:14.5pt"&gt;Recognition of revenue when or as the performance obligations are satisfied.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company refers to its publishers, app developers, and channel partners collectively as its publishers. The Company generates revenue through the monetization of publisher ad impressions on its platform. The Company&#x2019;s platform allows publishers to sell, in real time, ad impressions to buyers and provides automated inventory management and monetization tools to publishers across various device types and digital ad formats. The Company charges publishers a fee, which is typically a percentage of the value of the ad impressions monetized through the Company&#x2019;s platform. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company maintains agreements with each publisher and buyer in the form of written service agreements, which set out the terms of the relationship, including payment terms (typically ninety days or less) and access to its platform. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company invoices buyers for publisher digital advertising inventory purchased through its platform. The Company recognizes revenue when a bid is won and a buyer purchases inventory on its platform. The Company estimates and records reductions to revenue for rebates related to supply path optimization agreements based on expected volumes during the incentive term.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The determination as to whether revenue should be reported gross of amounts billed to buyers (gross basis) or net of payments to publishers (net basis) requires significant judgment, and is based on the Company&#x2019;s assessment of whether it is acting as the principal or an agent in the transaction. The Company has determined that it does not act as the principal in the purchase and sale of digital advertising inventory because it does not control the advertising inventory and it does not set the price which is the result of an auction within the marketplace. Based on these and other factors, the Company reports revenue on a net basis.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company generally invoices buyers at the end of each month for the full purchase price of ad impressions monetized in that month. Accounts receivable are recorded at the amount of gross billings for the amounts it is responsible to collect, and accounts payable are recorded at the net amount payable to publishers. Accordingly, both accounts receivable and accounts payable appear large in relation to revenue reported on a net basis.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Cost of Revenue &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Cost of revenue consists primarily of data center co-location costs, depreciation expense related to hardware supporting the Company&#x2019;s platform, amortization expense related to capitalized internal use software development costs, personnel costs, and allocated facilities costs. Personnel costs include salaries, bonuses, stock-&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;based compensation, and employee benefit costs, and are primarily attributable to the Company&#x2019;s network operations group which maintains the Company&#x2019;s servers and the Company&#x2019;s client operations group, which is responsible for integration of new publishers and buyers and providing customer support for existing customers.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Technology and Development Costs&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Technology and development expenses consist primarily of personnel costs, including salaries, bonuses, stock-based compensation, and employee benefits costs, allocated facilities costs, and professional services. These expenses include costs incurred in the development, implementation and maintenance of internal use software, including platform and related infrastructure. Technology and development costs are expensed as incurred, except to the extent that such costs are associated with internal use software development that meets the criteria for capitalization. The Company amortizes internal use software development costs that relate to its revenue producing activities on its platform to cost of revenue. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Advertising Costs&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Advertising costs are expensed as incurred and are included in sales and marketing expenses. The Company&#x2019;s advertising costs recorded during the years ended December&#160;31, 2021, 2020 and 2019 were $0.5&#160;million, $0.5 million and $0.3 million, respectively.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Stock-Based Compensation&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.5pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; Stock-based compensation expense related to stock awards, including stock options, restricted stock units (&#x201c;RSUs&#x201d;),  and the employee stock purchase plan (the &#x201c;ESPP&#x201d;), is measured based on the fair value of the awards granted and recognized as an expense on a straight-line basis over the requisite service period.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.5pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The fair value of each option and ESPP award is estimated on the grant date using the Black-Scholes option pricing model. The Black-Scholes option pricing model requires the input of highly subjective assumptions, including the fair value of the underlying common stock, the expected term of the award, the expected volatility of the price of our common stock, risk-free interest rates, and the expected dividend yield of our common stock.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.5pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The fair value of each RSA and RSU award is based on the fair value of the underlying common stock as of the grant date.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.5pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The assumptions used to determine the fair value of the stock awards represent management&#x2019;s best estimates. These estimates involve inherent uncertainties and the application of management&#x2019;s judgment. We account for forfeitures as they occur instead of estimating the number of awards expected to be forfeited. For additional information regarding stock-based compensation and the assumptions used for determining the fair value of stock options and ESPP awards, refer to Note 10&#x2014;Stockholders&#x2019; Equity and Equity Incentive Plans.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Foreign Currency Translation&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The functional currency of the Company&#x2019;s foreign subsidiaries is the U.S. dollar. Accordingly, all monetary assets and liabilities of these subsidiaries are remeasured at the current exchange rate at each balance sheet date, nonmonetary assets and liabilities are measured at historical rates, and revenue and expenses are remeasured at average exchange rates during the period. Transaction gains and losses are included in other income (expense), net in the accompanying consolidated statements of operations and comprehensive income. The Company&#x2019;s net foreign currency (gain) losses recorded during the years ended December&#160;31, 2021, 2020 and 2019 were $0.1&#160;million, $0.6 million, and $0.4 million respectively. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Comprehensive Income &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Comprehensive income is composed of two components: net income and other comprehensive gain (loss). The Company&#x2019;s changes in unrealized gains and losses on available-for-sale marketable securities represent the components of other comprehensive gain (loss) that are excluded from the reported net income.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Income Taxes&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company utilizes the asset and liability method under which deferred tax assets and liabilities arise from the temporary differences between the tax basis of an asset or liability and its reported amount in the consolidated financial statements, as well as from net operating loss and tax credit carryforwards. Deferred tax amounts are determined by using the tax rates expected to be in effect when the taxes will actually be paid or refunds received, as provided for under currently enacted tax law. A valuation allowance is established when necessary to reduce deferred tax assets to the amount expected to be realized.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company recognizes the tax benefit from an uncertain tax position only if it is more likely than not that the tax position will be sustained on examination by the taxing authorities, based on the technical merits of the position. The tax benefits recognized in the consolidated financial statements from such positions are then measured based on the largest benefit that has a greater than 50% likelihood of being realized. The Company recognizes interest and penalties related to income tax matters as income tax expense.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Segment Information&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Operating segments are components of an enterprise for which separate financial information is available and is evaluated regularly by the Company&#x2019;s chief operating decision maker in deciding how to allocate resources and assessing performance. The Company&#x2019;s chief operating decision maker is its Chief Executive Officer.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Chief Executive Officer reviews financial information presented on a consolidated basis, for purposes of allocating resources and evaluating financial performance. The Company has one business activity and there are no segment managers accountable for operations, operating results beyond revenue or gross profit, or plans for levels or components below the consolidated unit level. Accordingly, the Company has a single reporting segment.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Concentration of Revenue and Accounts Receivable&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company defines its revenue concentration based on revenue recognized from individual publishers. For the years ended December&#160;31, 2021, 2020 and 2019, one publisher represented 17%, 20% and 28% respectively, of the Company&#x2019;s revenue. As of December&#160;31, 2021, two buyers accounted for 29% and 19%, respectively, of accounts receivable. As of December&#160;31, 2020, four buyers accounted for 33%, 14%, 13% and 11%, respectively, of accounts receivable.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Net Income Per Share Attributable to Common Stockholders&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Basic and diluted net income per share attributable to Class A and Class B common stock is computed in conformity with the two-class method required for participating securities. The Company applies the two-class method to allocate earnings between common and other participating securities based on their participation rights. Prior to the conversion of preferred stock to common stock concurrent with the IPO in December 2020 and because the holders of the Company&#x2019;s convertible preferred stock were entitled to participate in dividends, the Company allocated net income to common and preferred stock based on their respective rights to receive dividends, whether or not declared.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Distributed and undistributed earnings allocated to participating securities are subtracted from net income in determining net income attributable to common stockholders. Basic net income per share is computed by dividing net income attributable to common stockholders by the weighted-average number of shares of our Class A and Class B common stock outstanding.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The diluted net income per share attributable to common stockholders is computed by giving effect to all dilutive securities. Diluted net income per share attributable to common stockholders is computed by dividing the resulting net income attributable to common stockholders by the weighted-average number of fully diluted common shares outstanding. During the periods when there is a net loss attributable to common stockholders, potentially &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;dilutive common stock equivalents have been excluded from the calculation of diluted net loss per share attributable to common stockholders as their effect is anti-dilutive.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Recently Adopted Accounting Pronouncements&lt;/span&gt;&lt;/div&gt;&lt;div style="text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In February 2016, the FASB issued ASU 2016-02, &lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Leases&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; (Topic 842), to increase transparency and comparability among organizations related to their leasing arrangements. This comprehensive new standard amends and supersedes existing lease accounting guidance and is intended to increase transparency and comparability among organizations by recognizing right-of-use (ROU) lease assets and lease liabilities on the balance sheet and requiring disclosure of key information about leasing arrangements. Lease expense continues to be recognized in a manner similar to legacy GAAP. The Company adopted the new lease standard on January 1, 2021 using the optional transition method to the modified retrospective approach. Under this transition provision, results for reporting periods beginning on January 1, 2021 are presented under Topic 842, while prior period amounts continue to be reported and disclosed in accordance with the Company&#x2019;s historical accounting treatment under ASC Topic 840, &lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Leases&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;. &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-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;To reduce the burden of adoption and ongoing compliance with Topic 842, a number of practical expedients and policy elections are available under the new guidance. The Company elected the "package of practical expedients" permitted under the transition guidance, which among other things, did not require reassessment of whether contracts entered into prior to adoption are or contain leases, and allowed carryforward of the historical lease classification for existing leases. The Company has not elected to adopt the &#x201c;hindsight&#x201d; practical expedient, and therefore will measure the ROU asset and lease liability using the remaining portion of the lease term at adoption on January 1, 2021.  &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-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company made an accounting policy election under Topic 842 not to recognize right-of-use (ROU) assets and lease liabilities for leases with a term of twelve months or less. For all other leases, the Company recognizes ROU assets and lease liabilities based on the present value of lease payments over the lease term at the commencement date of the lease (or January 1, 2021 for existing leases upon the adoption of Topic 842). The ROU assets also include any initial direct costs incurred and lease payments made at or before the commencement date and are reduced by any lease incentives.&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-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company&#x2019;s leases may include a non-lease component representing additional services transferred to the Company, such as common area maintenance for real estate. The Company made an accounting policy election to account for each separate lease component and the non-lease components associated with that lease component as a single lease component. As such, minimum lease payments include fixed payments for non-lease components within a lease agreement but exclude variable lease payments not dependent on an index or rate, such as common area maintenance, operating expenses, utilities, or other costs that are subject to fluctuation from period to period. Non-lease components that are variable in nature are recorded as variable lease expense in the period incurred.&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-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company uses its incremental borrowing rate to determine the present value of lease payments, as the Company&#x2019;s leases do not have a readily determinable implicit discount rate. The incremental borrowing rate is the rate of interest the Company would have to pay to borrow on a collateralized basis over a similar term and amount in a similar economic environment. Judgement is applied in assessing factors such as Company-specific credit risk, lease term, nature and quality of the underlying collateral, currency, and economic environment in determining the incremental borrowing rate to apply to each lease.&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-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Adoption of Topic 842 resulted in the recording of ROU assets and lease liabilities related to the Company&#x2019;s operating leases of approximately $2.8&#160;million and $3.1&#160;million, respectively, on January 1, 2021. The adoption of the new lease standard did not materially impact our consolidated net income or consolidated cash flows and did not result in a cumulative-effect adjustment to the opening balance of retained earnings.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In June 2016, FASB issued ASU No. 2016-13, &lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Financial Instruments &#x2013; Credit Losses (Topic 326): Measurement of Credit Losses on Financial Instruments&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; (ASU 2016-13). This update changes the accounting for recognizing impairments of financial assets, such that credit losses for certain types of financial instruments will be &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;estimated based on expected losses. The update also modifies the impairment models for available-for-sale debt securities and for purchased financial assets with credit deterioration since their origination. The Company adopted ASU 2016-13 as of January 1, 2021. The standard did not have any material impact on its consolidated financial statements. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In January 2017, the FASB issued ASU No. 2017-04, &lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Intangibles&#x2014;Goodwill and Other: Simplifying the Test for Goodwill Impairment&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; (ASU 2017-04). ASU 2017-04 eliminates Step 2 from the goodwill impairment test which measures a goodwill impairment loss by comparing the implied fair value of a reporting unit&#x2019;s goodwill with the carrying amount of that goodwill. Under ASU 2017-04, an entity should perform its annual or interim goodwill impairment test by comparing the fair value of the reporting unit with its carrying amount, and should recognize an impairment loss for the amount by which the carrying amount exceeds the reporting unit&#x2019;s fair value, with the loss not exceeding the total amount of goodwill allocated to that reporting unit. The Company adopted ASU 2017-04 as of January 1, 2021. The standard did not have any material impact on its consolidated financial statements.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In December 2019 the FASB issued ASU 2019-12&#x2014;Simplifying the Accounting for Income Taxes (ASU 2019-12). ASU 2019-12 simplifies the accounting for income taxes by removing certain exceptions to general principles in Topic 740 and clarifies and amends existing guidance for clarity and consistent application.The Company adopted ASU 2019-12 as of January 1, 2021. The standard did not have a material impact on the condensed consolidated financial statements and related disclosures.&lt;/span&gt;&lt;/div&gt;</us-gaap:BasisOfPresentationAndSignificantAccountingPoliciesTextBlock>
    <us-gaap:BasisOfAccountingPolicyPolicyTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90ZXh0cmVnaW9uOjJlYzdmZDRmY2M5ZDRlNThiMWU5NjQ5YmE5ZmM0Y2UzXzI4NTUy_17897f6c-f05a-4ed8-b545-8ff7bcdce703">&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Basis of Presentation&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The accompanying consolidated financial statements have been prepared in accordance with generally accepted accounting principles in the United States of America (&#x201c;GAAP&#x201d;). The accompanying consolidated financial statements include the accounts of PubMatic, Inc. and its wholly-owned subsidiaries. All intercompany accounts and transactions have been eliminated in consolidation.&lt;/span&gt;&lt;/div&gt;</us-gaap:BasisOfAccountingPolicyPolicyTextBlock>
    <us-gaap:UseOfEstimates
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90ZXh0cmVnaW9uOjJlYzdmZDRmY2M5ZDRlNThiMWU5NjQ5YmE5ZmM0Y2UzXzI4NTQ5_b570ecba-7fba-4afa-80be-8665ce3d7d3c">&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Use of Estimates&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The preparation of the consolidated financial statements in conformity with GAAP requires management to make estimates and assumptions that affect the amounts of assets and liabilities reported, disclosures about contingent assets and liabilities, and reported amounts of revenue and expenses.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Significant items subject to such estimates include: revenue recognition criteria, including the determination of revenue reporting as net versus gross in the Company&#x2019;s revenue arrangements, internal use software development costs, stock-based compensation, and income taxes, including the valuation reserve on deferred tax assets. The Company evaluates its estimates and assumptions on an ongoing basis using historical experience and other factors and adjusts those estimates and assumptions when facts and circumstances dictate. Actual results could materially differ from those estimates and assumptions. &lt;/span&gt;&lt;/div&gt;Due to the inherent uncertainty involved in making assumptions and estimates, events and changes in circumstances arising after December&#160;31, 2021, including those resulting from the impacts of the COVID-19 pandemic, may result in actual outcomes that differ from those contemplated by the Company&#x2019;s assumptions and estimates.</us-gaap:UseOfEstimates>
    <us-gaap:ConcentrationRiskCreditRisk
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90ZXh0cmVnaW9uOjJlYzdmZDRmY2M5ZDRlNThiMWU5NjQ5YmE5ZmM0Y2UzXzEwOTk1MTE2NTYzMzQ_395eb509-54c6-4995-b883-09f950b635fe">&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Concentration of Credit Risk&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Financial instruments that potentially subject the Company to concentration of credit risk consist principally of cash and cash equivalents, marketable securities, and accounts receivable. The Company maintains its cash and cash equivalents with financial institutions in amounts which exceed Federal Deposit Insurance Corporation limits.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company&#x2019;s investment policy limits investments to certain types of securities issued by the U.S. government and its agencies and institutions with investment-grade credit ratings and places restrictions on &lt;/span&gt;&lt;/div&gt;maturities and concentration by type and issuer. The primary objective of its investment activities is to preserve principal while maximizing income without significantly increasing risk.</us-gaap:ConcentrationRiskCreditRisk>
    <us-gaap:CashAndCashEquivalentsPolicyTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90ZXh0cmVnaW9uOjJlYzdmZDRmY2M5ZDRlNThiMWU5NjQ5YmE5ZmM0Y2UzXzEwOTk1MTE2NTYzMzU_f85dc7d8-caa7-4039-83d0-8267c7b8e262">&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Cash and Cash Equivalents&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company considers all highly liquid investments with an original maturity at the date of purchase of three months or less to be cash equivalents.&lt;/span&gt;&lt;/div&gt;</us-gaap:CashAndCashEquivalentsPolicyTextBlock>
    <us-gaap:MarketableSecuritiesPolicy
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90ZXh0cmVnaW9uOjJlYzdmZDRmY2M5ZDRlNThiMWU5NjQ5YmE5ZmM0Y2UzXzEwOTk1MTE2NTYzMzY_e0053b42-6c30-43e2-a215-6f65b85ad82d">&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Marketable Securities&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company classifies marketable securities as available-for-sale at the time of purchase and reevaluates such classification at each balance sheet date. The Company may sell these securities at any time for use in current operations even if they have not yet reached maturity. As a result, the Company classifies its marketable securities, including those with maturities beyond twelve months, as current assets in the consolidated balance sheets. These marketable securities are carried at fair value and unrealized gains and losses are recorded in other comprehensive income, which is reflected as a component of stockholders&#x2019; equity. These marketable securities are assessed as to whether those with unrealized loss positions are other than temporarily impaired. The Company considers impairments to be other than temporary if they are related to deterioration in credit risk or if it is likely the securities will be sold before the recovery of their cost basis. Realized gains and losses from the sale of marketable securities and declines in value deemed to be other than temporary are determined based on the specific identification method. Realized gains and losses, and any expected credit losses, are reported in other income (expense), net in the consolidated statements of operations and comprehensive income.&lt;/span&gt;&lt;/div&gt;</us-gaap:MarketableSecuritiesPolicy>
    <us-gaap:FairValueOfFinancialInstrumentsPolicy
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90ZXh0cmVnaW9uOjJlYzdmZDRmY2M5ZDRlNThiMWU5NjQ5YmE5ZmM0Y2UzXzEwOTk1MTE2NTYzMzc_d3545b96-0879-42ae-bc29-170ac5fe4cd4">&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Fair Value of Financial Instruments&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Financial instruments consist of cash equivalents, marketable securities, accounts receivable, equity investment, accounts payable, and accrued liabilities. Cash equivalents, marketable securities and equity investment are remeasured at fair value at the end of every period. Accounts receivable, accounts payable and accrued liabilities are stated at their carrying value, which approximates fair value due to the short time to the expected receipt or payment.&lt;/span&gt;&lt;/div&gt;</us-gaap:FairValueOfFinancialInstrumentsPolicy>
    <us-gaap:ReceivablesTradeAndOtherAccountsReceivableAllowanceForDoubtfulAccountsPolicy
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90ZXh0cmVnaW9uOjJlYzdmZDRmY2M5ZDRlNThiMWU5NjQ5YmE5ZmM0Y2UzXzEwOTk1MTE2NTYzMzg_f7799036-b8f9-409c-b001-e8185dc3d9a3">Accounts Receivable and Allowance for Credit Losses (formerly Allowance for Doubtful Accounts)Accounts receivable are recorded at the invoiced amount, are unsecured, and do not bear interest. The allowance for credit losses is based on the best estimate of the amount of probable credit losses in existing accounts receivable. The allowance for credit losses is determined based on historical collection experience and the review in each period of the status of the then outstanding accounts receivable, while taking into consideration current customer information, collection history, and other relevant data. The Company reviews the allowance for credit losses on a quarterly basis. Account balances are written off against the allowance when the Company believes it is probable the receivable will not be recovered.</us-gaap:ReceivablesTradeAndOtherAccountsReceivableAllowanceForDoubtfulAccountsPolicy>
    <us-gaap:AccountsReceivableAllowanceForCreditLossTableTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90ZXh0cmVnaW9uOjJlYzdmZDRmY2M5ZDRlNThiMWU5NjQ5YmE5ZmM0Y2UzXzEwOTk1MTE2NTYzNTY_3c703e7f-63c4-44df-a85e-f538b74182a6">The following table presents the changes in the allowance for credit losses (in thousands):&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:55.791%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.842%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.842%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.843%"/&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="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;December 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="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&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 2px 10pt;text-align:left;text-indent:-9pt;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Allowance for credit losses, beginning balance&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;1,989&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2,051&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;1,784&#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 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Provision&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;319&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;3,557&#160;&lt;/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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Write-offs&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:120%"&gt;(224)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;(381)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;(3,290)&lt;/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 10pt;text-align:left;text-indent:-9pt;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Allowance for credit losses, ending balance&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 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;1,765&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;1,989&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2,051&#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;</us-gaap:AccountsReceivableAllowanceForCreditLossTableTextBlock>
    <us-gaap:AllowanceForDoubtfulAccountsReceivable
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90YWJsZTplMmNmOGY5ZDA0NGU0ZDBhOTVhMTcxOWJlMGZkZmM3Mi90YWJsZXJhbmdlOmUyY2Y4ZjlkMDQ0ZTRkMGE5NWExNzE5YmUwZmRmYzcyXzItMS0xLTEtMjgxMDU_5683ac42-7261-4195-83be-d1cb2464a467"
      unitRef="usd">1989000</us-gaap:AllowanceForDoubtfulAccountsReceivable>
    <us-gaap:AllowanceForDoubtfulAccountsReceivable
      contextRef="ibcf318f535e34e548d6a7a49e392f2cd_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90YWJsZTplMmNmOGY5ZDA0NGU0ZDBhOTVhMTcxOWJlMGZkZmM3Mi90YWJsZXJhbmdlOmUyY2Y4ZjlkMDQ0ZTRkMGE5NWExNzE5YmUwZmRmYzcyXzItMy0xLTEtMjgxMDU_60e6d549-f655-4767-95ba-7124807bd57d"
      unitRef="usd">2051000</us-gaap:AllowanceForDoubtfulAccountsReceivable>
    <us-gaap:AllowanceForDoubtfulAccountsReceivable
      contextRef="ief144f96c0df4282b351b86950ec96f1_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90YWJsZTplMmNmOGY5ZDA0NGU0ZDBhOTVhMTcxOWJlMGZkZmM3Mi90YWJsZXJhbmdlOmUyY2Y4ZjlkMDQ0ZTRkMGE5NWExNzE5YmUwZmRmYzcyXzItNS0xLTEtNDIxMzg_4a1788e3-c306-42a9-bc0a-339a3499c3d0"
      unitRef="usd">1784000</us-gaap:AllowanceForDoubtfulAccountsReceivable>
    <us-gaap:ProvisionForDoubtfulAccounts
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90YWJsZTplMmNmOGY5ZDA0NGU0ZDBhOTVhMTcxOWJlMGZkZmM3Mi90YWJsZXJhbmdlOmUyY2Y4ZjlkMDQ0ZTRkMGE5NWExNzE5YmUwZmRmYzcyXzMtMS0xLTEtMjgxMDU_7fedaa22-cc8a-4937-9c8c-b3d93fdb529b"
      unitRef="usd">0</us-gaap:ProvisionForDoubtfulAccounts>
    <us-gaap:ProvisionForDoubtfulAccounts
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90YWJsZTplMmNmOGY5ZDA0NGU0ZDBhOTVhMTcxOWJlMGZkZmM3Mi90YWJsZXJhbmdlOmUyY2Y4ZjlkMDQ0ZTRkMGE5NWExNzE5YmUwZmRmYzcyXzMtMy0xLTEtMjgxMDU_ed2f9f89-20e6-4d06-bb0c-b97fbedc0120"
      unitRef="usd">319000</us-gaap:ProvisionForDoubtfulAccounts>
    <us-gaap:ProvisionForDoubtfulAccounts
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90YWJsZTplMmNmOGY5ZDA0NGU0ZDBhOTVhMTcxOWJlMGZkZmM3Mi90YWJsZXJhbmdlOmUyY2Y4ZjlkMDQ0ZTRkMGE5NWExNzE5YmUwZmRmYzcyXzMtNS0xLTEtNDIxMzg_ec6614c9-6af3-411f-b096-031dc2ad1781"
      unitRef="usd">3557000</us-gaap:ProvisionForDoubtfulAccounts>
    <us-gaap:AllowanceForDoubtfulAccountsReceivableWriteOffs
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90YWJsZTplMmNmOGY5ZDA0NGU0ZDBhOTVhMTcxOWJlMGZkZmM3Mi90YWJsZXJhbmdlOmUyY2Y4ZjlkMDQ0ZTRkMGE5NWExNzE5YmUwZmRmYzcyXzQtMS0xLTEtMjgxMDU_be3cb69e-81d3-4c1f-8569-e2b974d7b019"
      unitRef="usd">224000</us-gaap:AllowanceForDoubtfulAccountsReceivableWriteOffs>
    <us-gaap:AllowanceForDoubtfulAccountsReceivableWriteOffs
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90YWJsZTplMmNmOGY5ZDA0NGU0ZDBhOTVhMTcxOWJlMGZkZmM3Mi90YWJsZXJhbmdlOmUyY2Y4ZjlkMDQ0ZTRkMGE5NWExNzE5YmUwZmRmYzcyXzQtMy0xLTEtMjgxMDU_a5b2ecd5-716c-45ea-8e49-5dc9329b67fd"
      unitRef="usd">381000</us-gaap:AllowanceForDoubtfulAccountsReceivableWriteOffs>
    <us-gaap:AllowanceForDoubtfulAccountsReceivableWriteOffs
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90YWJsZTplMmNmOGY5ZDA0NGU0ZDBhOTVhMTcxOWJlMGZkZmM3Mi90YWJsZXJhbmdlOmUyY2Y4ZjlkMDQ0ZTRkMGE5NWExNzE5YmUwZmRmYzcyXzQtNS0xLTEtNDIxMzg_3fae394a-b11d-4757-baab-6abdf6494afc"
      unitRef="usd">3290000</us-gaap:AllowanceForDoubtfulAccountsReceivableWriteOffs>
    <us-gaap:AllowanceForDoubtfulAccountsReceivable
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90YWJsZTplMmNmOGY5ZDA0NGU0ZDBhOTVhMTcxOWJlMGZkZmM3Mi90YWJsZXJhbmdlOmUyY2Y4ZjlkMDQ0ZTRkMGE5NWExNzE5YmUwZmRmYzcyXzUtMS0xLTEtMjg2OTE_d9504b5e-1ed7-4e05-a455-83e38ca5acae"
      unitRef="usd">1765000</us-gaap:AllowanceForDoubtfulAccountsReceivable>
    <us-gaap:AllowanceForDoubtfulAccountsReceivable
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90YWJsZTplMmNmOGY5ZDA0NGU0ZDBhOTVhMTcxOWJlMGZkZmM3Mi90YWJsZXJhbmdlOmUyY2Y4ZjlkMDQ0ZTRkMGE5NWExNzE5YmUwZmRmYzcyXzUtMy0xLTEtMjg2OTk_9440072e-99e0-4174-a3f1-80d35db6f383"
      unitRef="usd">1989000</us-gaap:AllowanceForDoubtfulAccountsReceivable>
    <us-gaap:AllowanceForDoubtfulAccountsReceivable
      contextRef="ibcf318f535e34e548d6a7a49e392f2cd_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90YWJsZTplMmNmOGY5ZDA0NGU0ZDBhOTVhMTcxOWJlMGZkZmM3Mi90YWJsZXJhbmdlOmUyY2Y4ZjlkMDQ0ZTRkMGE5NWExNzE5YmUwZmRmYzcyXzUtNS0xLTEtNDIyNTM_b5c760c6-0b1f-4600-a2fb-869f4de24847"
      unitRef="usd">2051000</us-gaap:AllowanceForDoubtfulAccountsReceivable>
    <us-gaap:PropertyPlantAndEquipmentPolicyTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90ZXh0cmVnaW9uOjJlYzdmZDRmY2M5ZDRlNThiMWU5NjQ5YmE5ZmM0Y2UzXzEwOTk1MTE2NTYzMzk_207779ae-da49-46d5-9936-a9c60534a5b0">&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Property and Equipment&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Property and equipment, including leasehold improvements, are stated at cost, less accumulated depreciation and amortization. Depreciation is computed using the straight-line method over the estimated useful &lt;/span&gt;&lt;/div&gt;lives of the related assets, generally three years. Leasehold improvements are amortized on a straight-line basis over the shorter of the estimated useful lives of the assets or the remaining lease term.</us-gaap:PropertyPlantAndEquipmentPolicyTextBlock>
    <us-gaap:InternalUseSoftwarePolicy
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90ZXh0cmVnaW9uOjJlYzdmZDRmY2M5ZDRlNThiMWU5NjQ5YmE5ZmM0Y2UzXzEwOTk1MTE2NTYzNDA_836280f1-0404-4062-b72f-e2c59e5095d7">&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Internal Use Software Development Costs&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company capitalizes certain internal use software development costs associated with creating and enhancing internal use software related to its platform and technology infrastructure. These costs include personnel and related employee benefits expenses for employees who are directly associated with and who devote time to software projects, and external direct costs of materials and services consumed in developing or obtaining the software. Software development costs that do not meet the criteria for capitalization are expensed as incurred and recorded in technology and development expenses in the consolidated statements of operations and comprehensive income.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Software development activities generally consist of three stages, (i) the planning stage, (ii) the application and infrastructure development stage, and (iii) the post implementation stage. Costs incurred in the planning and post implementation stages of software development, including costs associated with the post configuration training and repairs and maintenance of the developed technologies, are expensed as incurred. The Company capitalizes costs associated with software developed for internal use when both the preliminary project stage is completed and management has authorized further funding for the completion of the project. Costs incurred in the application and infrastructure development stages, including significant enhancements and upgrades, are capitalized. Capitalization ends once a project is substantially complete and the software and technologies are ready for their intended purpose. Internal use software development costs are amortized using a straight-line method over the estimated useful life of &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90ZXh0cmVnaW9uOjJlYzdmZDRmY2M5ZDRlNThiMWU5NjQ5YmE5ZmM0Y2UzXzEwOTk1MTE3MjQ3MTE_553e6439-f5e8-4552-9592-20ef34d0c37d"&gt;two&lt;/span&gt; to five years, commencing when the software is ready for its intended use.&lt;/span&gt;&lt;/div&gt;</us-gaap:InternalUseSoftwarePolicy>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="ibc849488a360414797b2be4e90da711d_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90ZXh0cmVnaW9uOjJlYzdmZDRmY2M5ZDRlNThiMWU5NjQ5YmE5ZmM0Y2UzXzEwOTk1MTE3MjQ3MjY_ebcacdae-b06e-4953-8b56-2ec465ec9706">P5Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:ImpairmentOrDisposalOfLongLivedAssetsPolicyTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90ZXh0cmVnaW9uOjJlYzdmZDRmY2M5ZDRlNThiMWU5NjQ5YmE5ZmM0Y2UzXzEwOTk1MTE2NTYzNDE_0d20ce93-2b6b-4c93-b8ba-3631a81abf80">Impairment of Long-Lived AssetsThe Company continually monitors events and changes in circumstances that could indicate that carrying amounts of its long-lived assets, including property and equipment and intangible assets may not be recoverable. When such events or changes in circumstances occur, the Company assesses the recoverability of long-lived assets by determining whether the carrying value of such assets will be recovered through their undiscounted expected future cash flows. If the future undiscounted cash flows are less than the carrying value of these assets, the Company recognizes an impairment loss based on the excess of the carrying value over the fair value of the assets.</us-gaap:ImpairmentOrDisposalOfLongLivedAssetsPolicyTextBlock>
    <us-gaap:GoodwillAndIntangibleAssetsGoodwillPolicy
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90ZXh0cmVnaW9uOjJlYzdmZDRmY2M5ZDRlNThiMWU5NjQ5YmE5ZmM0Y2UzXzEwOTk1MTE2NTYzNDI_c5bcf1c4-2599-4832-98a3-c8fdb74b42d0">&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Goodwill&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Goodwill represents the excess of the aggregate fair value of the consideration transferred in a business combination over the fair value of the assets acquired, net of liabilities assumed. The Company tests for impairment of goodwill annually during the fourth quarter or more frequently if events or changes in circumstances indicate that the goodwill may be impaired.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Events or changes in circumstances which could trigger an impairment review include a significant adverse change in legal factors or in the business climate, an adverse action or assessment by a regulator, unanticipated competition, a loss of key personnel, significant changes in the manner of the Company&#x2019;s use of the acquired assets, or the strategy for the Company&#x2019;s overall business, significant negative industry or economic trends, or significant underperformance relative to expected historical or projected future results of operations. The Company has not recorded any goodwill impairment to date.&lt;/span&gt;&lt;/div&gt;</us-gaap:GoodwillAndIntangibleAssetsGoodwillPolicy>
    <us-gaap:InvestmentPolicyTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90ZXh0cmVnaW9uOjJlYzdmZDRmY2M5ZDRlNThiMWU5NjQ5YmE5ZmM0Y2UzXzEwOTk1MTE2NTYzNDM_b1324bab-4168-4e0c-a415-308ad1275a60">&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Equity Investment&lt;/span&gt;&lt;/div&gt;&lt;div style="text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Prior to December 2021, the Company accounted for investment in non-marketable equity securities that it does not exercise significant influence using the measurement alternative in accordance with Accounting Standards Update 2016-01. Under the measurement alternative, the carrying value is measured at cost, less any impairment, plus or minus changes resulting from observable price changes in orderly transactions for identical or similar investments of the same issuer. Adjustments are determined primarily based on a market approach as of the &lt;/span&gt;&lt;/div&gt;transaction date. During December 2021, an observable transaction occurred for such investment driven by a merger with a company registered with the U.S. Securities and Exchange Commission (SEC) and determined to have an active market. Therefore, the investment has readily determinable and observable fair value as of December&#160;31, 2021 with realized and unrealized gains and losses included in Other (income) expense, net. The Company classifies its equity investment as Other assets, non-current on the Consolidated Balance Sheets.</us-gaap:InvestmentPolicyTextBlock>
    <us-gaap:RevenueFromContractWithCustomerPolicyTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90ZXh0cmVnaW9uOjJlYzdmZDRmY2M5ZDRlNThiMWU5NjQ5YmE5ZmM0Y2UzXzEwOTk1MTE2NTYzNDQ_88f7e8bc-7ace-4e50-9327-81871689ee9c">&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Revenue Recognition&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company recognizes revenue through the following steps:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;padding-left:72pt;text-indent:-18pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#x2022;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:14.5pt"&gt;&#160;Identification of a contract with a customer;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;padding-left:72pt;text-indent:-18pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#x2022;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:14.5pt"&gt;Identification of the performance obligations in the contract;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;padding-left:72pt;text-indent:-18pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#x2022;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:14.5pt"&gt;Determination of the transaction price;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;padding-left:72pt;text-indent:-18pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#x2022;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:14.5pt"&gt;Allocation of the transaction price to the performance obligations in the contract; and&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;padding-left:72pt;text-indent:-18pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#x2022;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:14.5pt"&gt;Recognition of revenue when or as the performance obligations are satisfied.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company refers to its publishers, app developers, and channel partners collectively as its publishers. The Company generates revenue through the monetization of publisher ad impressions on its platform. The Company&#x2019;s platform allows publishers to sell, in real time, ad impressions to buyers and provides automated inventory management and monetization tools to publishers across various device types and digital ad formats. The Company charges publishers a fee, which is typically a percentage of the value of the ad impressions monetized through the Company&#x2019;s platform. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company maintains agreements with each publisher and buyer in the form of written service agreements, which set out the terms of the relationship, including payment terms (typically ninety days or less) and access to its platform. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company invoices buyers for publisher digital advertising inventory purchased through its platform. The Company recognizes revenue when a bid is won and a buyer purchases inventory on its platform. The Company estimates and records reductions to revenue for rebates related to supply path optimization agreements based on expected volumes during the incentive term.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The determination as to whether revenue should be reported gross of amounts billed to buyers (gross basis) or net of payments to publishers (net basis) requires significant judgment, and is based on the Company&#x2019;s assessment of whether it is acting as the principal or an agent in the transaction. The Company has determined that it does not act as the principal in the purchase and sale of digital advertising inventory because it does not control the advertising inventory and it does not set the price which is the result of an auction within the marketplace. Based on these and other factors, the Company reports revenue on a net basis.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company generally invoices buyers at the end of each month for the full purchase price of ad impressions monetized in that month. Accounts receivable are recorded at the amount of gross billings for the amounts it is responsible to collect, and accounts payable are recorded at the net amount payable to publishers. Accordingly, both accounts receivable and accounts payable appear large in relation to revenue reported on a net basis.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Cost of Revenue &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Cost of revenue consists primarily of data center co-location costs, depreciation expense related to hardware supporting the Company&#x2019;s platform, amortization expense related to capitalized internal use software development costs, personnel costs, and allocated facilities costs. Personnel costs include salaries, bonuses, stock-&lt;/span&gt;&lt;/div&gt;based compensation, and employee benefit costs, and are primarily attributable to the Company&#x2019;s network operations group which maintains the Company&#x2019;s servers and the Company&#x2019;s client operations group, which is responsible for integration of new publishers and buyers and providing customer support for existing customers.</us-gaap:RevenueFromContractWithCustomerPolicyTextBlock>
    <pubm:TechnologyAndDevelopmentCostsPolicyPolicyTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90ZXh0cmVnaW9uOjJlYzdmZDRmY2M5ZDRlNThiMWU5NjQ5YmE5ZmM0Y2UzXzEwOTk1MTE2NTYzNDc_81e88ba0-7b24-49d6-837f-6376a33e1d6f">Technology and Development CostsTechnology and development expenses consist primarily of personnel costs, including salaries, bonuses, stock-based compensation, and employee benefits costs, allocated facilities costs, and professional services. These expenses include costs incurred in the development, implementation and maintenance of internal use software, including platform and related infrastructure. Technology and development costs are expensed as incurred, except to the extent that such costs are associated with internal use software development that meets the criteria for capitalization. The Company amortizes internal use software development costs that relate to its revenue producing activities on its platform to cost of revenue.</pubm:TechnologyAndDevelopmentCostsPolicyPolicyTextBlock>
    <us-gaap:AdvertisingCostsPolicyTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90ZXh0cmVnaW9uOjJlYzdmZDRmY2M5ZDRlNThiMWU5NjQ5YmE5ZmM0Y2UzXzEwOTk1MTE2NTYzNDg_0b5e6dd5-8206-420a-881f-1030b8bd3c72">Advertising CostsAdvertising costs are expensed as incurred and are included in sales and marketing expenses.</us-gaap:AdvertisingCostsPolicyTextBlock>
    <us-gaap:AdvertisingExpense
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90ZXh0cmVnaW9uOjJlYzdmZDRmY2M5ZDRlNThiMWU5NjQ5YmE5ZmM0Y2UzXzI3NDg3NzkxMDI2NDc_9d702b45-b1df-4b7e-a4d8-e54b296527a3"
      unitRef="usd">500000</us-gaap:AdvertisingExpense>
    <us-gaap:AdvertisingExpense
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90ZXh0cmVnaW9uOjJlYzdmZDRmY2M5ZDRlNThiMWU5NjQ5YmE5ZmM0Y2UzXzE1OTY4_3c1206dd-c5d8-40d4-9157-d1d71d4eaff0"
      unitRef="usd">500000</us-gaap:AdvertisingExpense>
    <us-gaap:AdvertisingExpense
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90ZXh0cmVnaW9uOjJlYzdmZDRmY2M5ZDRlNThiMWU5NjQ5YmE5ZmM0Y2UzXzE1OTcy_e16a3d5c-f78e-4db5-9f43-8d3420748499"
      unitRef="usd">300000</us-gaap:AdvertisingExpense>
    <us-gaap:ShareBasedCompensationOptionAndIncentivePlansPolicy
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90ZXh0cmVnaW9uOjJlYzdmZDRmY2M5ZDRlNThiMWU5NjQ5YmE5ZmM0Y2UzXzEwOTk1MTE2NTYzNDk_f87eb88a-5876-4c24-96b7-920c2702614a">&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Stock-Based Compensation&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.5pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; Stock-based compensation expense related to stock awards, including stock options, restricted stock units (&#x201c;RSUs&#x201d;),  and the employee stock purchase plan (the &#x201c;ESPP&#x201d;), is measured based on the fair value of the awards granted and recognized as an expense on a straight-line basis over the requisite service period.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.5pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The fair value of each option and ESPP award is estimated on the grant date using the Black-Scholes option pricing model. The Black-Scholes option pricing model requires the input of highly subjective assumptions, including the fair value of the underlying common stock, the expected term of the award, the expected volatility of the price of our common stock, risk-free interest rates, and the expected dividend yield of our common stock.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.5pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The fair value of each RSA and RSU award is based on the fair value of the underlying common stock as of the grant date.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.5pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The assumptions used to determine the fair value of the stock awards represent management&#x2019;s best estimates. These estimates involve inherent uncertainties and the application of management&#x2019;s judgment. We account for forfeitures as they occur instead of estimating the number of awards expected to be forfeited. For additional information regarding stock-based compensation and the assumptions used for determining the fair value of stock options and ESPP awards, refer to Note 10&#x2014;Stockholders&#x2019; Equity and Equity Incentive Plans.&lt;/span&gt;&lt;/div&gt;</us-gaap:ShareBasedCompensationOptionAndIncentivePlansPolicy>
    <us-gaap:ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90ZXh0cmVnaW9uOjJlYzdmZDRmY2M5ZDRlNThiMWU5NjQ5YmE5ZmM0Y2UzXzEwOTk1MTE2NTYzNTA_aa1dcf82-10b0-469f-a881-29ee0fd282a7">Foreign Currency TranslationThe functional currency of the Company&#x2019;s foreign subsidiaries is the U.S. dollar. Accordingly, all monetary assets and liabilities of these subsidiaries are remeasured at the current exchange rate at each balance sheet date, nonmonetary assets and liabilities are measured at historical rates, and revenue and expenses are remeasured at average exchange rates during the period. Transaction gains and losses are included in other income (expense), net in the accompanying consolidated statements of operations and comprehensive income.</us-gaap:ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock>
    <us-gaap:ForeignCurrencyTransactionGainLossUnrealized
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90ZXh0cmVnaW9uOjJlYzdmZDRmY2M5ZDRlNThiMWU5NjQ5YmE5ZmM0Y2UzXzI3NDg3NzkwOTgwNDE_8f63e763-0d45-4ed8-a4c4-32ce73cd1ada"
      unitRef="usd">100000</us-gaap:ForeignCurrencyTransactionGainLossUnrealized>
    <us-gaap:ForeignCurrencyTransactionGainLossUnrealized
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90ZXh0cmVnaW9uOjJlYzdmZDRmY2M5ZDRlNThiMWU5NjQ5YmE5ZmM0Y2UzXzI3NDg3NzkwOTgwMzM_286c226b-2947-40cf-a5e3-3d3f277fbecb"
      unitRef="usd">-600000</us-gaap:ForeignCurrencyTransactionGainLossUnrealized>
    <us-gaap:ForeignCurrencyTransactionGainLossUnrealized
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90ZXh0cmVnaW9uOjJlYzdmZDRmY2M5ZDRlNThiMWU5NjQ5YmE5ZmM0Y2UzXzI3NDg3NzkwOTgwMzc_6203a017-12d0-491c-8e5b-8a43b67a52b0"
      unitRef="usd">-400000</us-gaap:ForeignCurrencyTransactionGainLossUnrealized>
    <us-gaap:ComprehensiveIncomePolicyPolicyTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90ZXh0cmVnaW9uOjJlYzdmZDRmY2M5ZDRlNThiMWU5NjQ5YmE5ZmM0Y2UzXzEwOTk1MTE2NTYzNTE_503b9621-88ad-4b05-bbd7-f3f5c5c45862">&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Comprehensive Income &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Comprehensive income is composed of two components: net income and other comprehensive gain (loss). The Company&#x2019;s changes in unrealized gains and losses on available-for-sale marketable securities represent the components of other comprehensive gain (loss) that are excluded from the reported net income.&lt;/span&gt;&lt;/div&gt;</us-gaap:ComprehensiveIncomePolicyPolicyTextBlock>
    <us-gaap:IncomeTaxPolicyTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90ZXh0cmVnaW9uOjJlYzdmZDRmY2M5ZDRlNThiMWU5NjQ5YmE5ZmM0Y2UzXzEwOTk1MTE2NTYzNTI_e9da1d64-8160-46b3-9e41-3de42e536359">&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Income Taxes&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company utilizes the asset and liability method under which deferred tax assets and liabilities arise from the temporary differences between the tax basis of an asset or liability and its reported amount in the consolidated financial statements, as well as from net operating loss and tax credit carryforwards. Deferred tax amounts are determined by using the tax rates expected to be in effect when the taxes will actually be paid or refunds received, as provided for under currently enacted tax law. A valuation allowance is established when necessary to reduce deferred tax assets to the amount expected to be realized.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company recognizes the tax benefit from an uncertain tax position only if it is more likely than not that the tax position will be sustained on examination by the taxing authorities, based on the technical merits of the position. The tax benefits recognized in the consolidated financial statements from such positions are then measured based on the largest benefit that has a greater than 50% likelihood of being realized. The Company recognizes interest and penalties related to income tax matters as income tax expense.&lt;/span&gt;&lt;/div&gt;</us-gaap:IncomeTaxPolicyTextBlock>
    <us-gaap:SegmentReportingPolicyPolicyTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90ZXh0cmVnaW9uOjJlYzdmZDRmY2M5ZDRlNThiMWU5NjQ5YmE5ZmM0Y2UzXzEwOTk1MTE2NTYzNTM_9b549d9e-ca2e-4a9c-ab4b-49db1c54ffd2">&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Segment Information&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Operating segments are components of an enterprise for which separate financial information is available and is evaluated regularly by the Company&#x2019;s chief operating decision maker in deciding how to allocate resources and assessing performance. The Company&#x2019;s chief operating decision maker is its Chief Executive Officer.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Chief Executive Officer reviews financial information presented on a consolidated basis, for purposes of allocating resources and evaluating financial performance. The Company has one business activity and there are no segment managers accountable for operations, operating results beyond revenue or gross profit, or plans for levels or components below the consolidated unit level. Accordingly, the Company has a single reporting segment.&lt;/span&gt;&lt;/div&gt;</us-gaap:SegmentReportingPolicyPolicyTextBlock>
    <us-gaap:ConcentrationRiskPercentage1
      contextRef="i565a16b0427148ccae8d34eb22d64e30_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90ZXh0cmVnaW9uOjJlYzdmZDRmY2M5ZDRlNThiMWU5NjQ5YmE5ZmM0Y2UzXzI3NDg3NzkxMDM0Mjg_71b8f64e-e056-4ab6-9adb-705afbba8ffd"
      unitRef="number">0.17</us-gaap:ConcentrationRiskPercentage1>
    <us-gaap:ConcentrationRiskPercentage1
      contextRef="id0892fecf3814bb88491cf665d681857_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90ZXh0cmVnaW9uOjJlYzdmZDRmY2M5ZDRlNThiMWU5NjQ5YmE5ZmM0Y2UzXzIwMzg4_7e135773-eec8-4133-84d0-c53e252d7cac"
      unitRef="number">0.20</us-gaap:ConcentrationRiskPercentage1>
    <us-gaap:ConcentrationRiskPercentage1
      contextRef="i478dd767c5d443c99f2860c7aea05948_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90ZXh0cmVnaW9uOjJlYzdmZDRmY2M5ZDRlNThiMWU5NjQ5YmE5ZmM0Y2UzXzIwMzky_de3ce4b5-56ef-4eac-883d-8cf7bf361420"
      unitRef="number">0.28</us-gaap:ConcentrationRiskPercentage1>
    <us-gaap:ConcentrationRiskPercentage1
      contextRef="ib3c8a0213f404cb98274b92f5c5e5bc4_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90ZXh0cmVnaW9uOjJlYzdmZDRmY2M5ZDRlNThiMWU5NjQ5YmE5ZmM0Y2UzXzIwNDc5_36a90af4-ab06-4ed3-896a-5a67200c2691"
      unitRef="number">0.29</us-gaap:ConcentrationRiskPercentage1>
    <us-gaap:ConcentrationRiskPercentage1
      contextRef="i1cc6e45f3a9b4d45b063af9e5809c964_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90ZXh0cmVnaW9uOjJlYzdmZDRmY2M5ZDRlNThiMWU5NjQ5YmE5ZmM0Y2UzXzIwNDgz_ede7849e-4df1-4be7-9458-b370fe50153b"
      unitRef="number">0.19</us-gaap:ConcentrationRiskPercentage1>
    <us-gaap:ConcentrationRiskPercentage1
      contextRef="i6b9e0e24b01e43e1acebedfd4cc599b6_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90ZXh0cmVnaW9uOjJlYzdmZDRmY2M5ZDRlNThiMWU5NjQ5YmE5ZmM0Y2UzXzIwNTcx_387707e0-1361-45c6-b6de-bf0b0cd4a979"
      unitRef="number">0.33</us-gaap:ConcentrationRiskPercentage1>
    <us-gaap:ConcentrationRiskPercentage1
      contextRef="i944ea994181f47be99d94e80c793de84_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90ZXh0cmVnaW9uOjJlYzdmZDRmY2M5ZDRlNThiMWU5NjQ5YmE5ZmM0Y2UzXzIwNTc4_bbf74c2a-2127-420a-bf48-1a3384d7d061"
      unitRef="number">0.14</us-gaap:ConcentrationRiskPercentage1>
    <us-gaap:ConcentrationRiskPercentage1
      contextRef="iea211fbe61704e69af45a1b753934f2f_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90ZXh0cmVnaW9uOjJlYzdmZDRmY2M5ZDRlNThiMWU5NjQ5YmE5ZmM0Y2UzXzI3NDg3NzkxMDM0ODQ_1b8188a0-8f9e-4be1-b232-edd0b07c9f68"
      unitRef="number">0.13</us-gaap:ConcentrationRiskPercentage1>
    <us-gaap:ConcentrationRiskPercentage1
      contextRef="i1621098111f24a3091fab6338a1fba8f_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90ZXh0cmVnaW9uOjJlYzdmZDRmY2M5ZDRlNThiMWU5NjQ5YmE5ZmM0Y2UzXzI3NDg3NzkxMDM0OTI_4c47bcf5-d83f-4df8-b95d-ff76dfd59529"
      unitRef="number">0.11</us-gaap:ConcentrationRiskPercentage1>
    <us-gaap:EarningsPerSharePolicyTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90ZXh0cmVnaW9uOjJlYzdmZDRmY2M5ZDRlNThiMWU5NjQ5YmE5ZmM0Y2UzXzEwOTk1MTE2NTYzNTU_978ea454-27f4-44d6-b0ba-b0a67229441e">&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Net Income Per Share Attributable to Common Stockholders&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Basic and diluted net income per share attributable to Class A and Class B common stock is computed in conformity with the two-class method required for participating securities. The Company applies the two-class method to allocate earnings between common and other participating securities based on their participation rights. Prior to the conversion of preferred stock to common stock concurrent with the IPO in December 2020 and because the holders of the Company&#x2019;s convertible preferred stock were entitled to participate in dividends, the Company allocated net income to common and preferred stock based on their respective rights to receive dividends, whether or not declared.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Distributed and undistributed earnings allocated to participating securities are subtracted from net income in determining net income attributable to common stockholders. Basic net income per share is computed by dividing net income attributable to common stockholders by the weighted-average number of shares of our Class A and Class B common stock outstanding.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The diluted net income per share attributable to common stockholders is computed by giving effect to all dilutive securities. Diluted net income per share attributable to common stockholders is computed by dividing the resulting net income attributable to common stockholders by the weighted-average number of fully diluted common shares outstanding. During the periods when there is a net loss attributable to common stockholders, potentially &lt;/span&gt;&lt;/div&gt;dilutive common stock equivalents have been excluded from the calculation of diluted net loss per share attributable to common stockholders as their effect is anti-dilutive.</us-gaap:EarningsPerSharePolicyTextBlock>
    <us-gaap:NewAccountingPronouncementsPolicyPolicyTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90ZXh0cmVnaW9uOjJlYzdmZDRmY2M5ZDRlNThiMWU5NjQ5YmE5ZmM0Y2UzXzI4NTUw_7b9bf45c-e02b-45a3-b1f3-153dfc5c73b4">&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Recently Adopted Accounting Pronouncements&lt;/span&gt;&lt;/div&gt;&lt;div style="text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In February 2016, the FASB issued ASU 2016-02, &lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Leases&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; (Topic 842), to increase transparency and comparability among organizations related to their leasing arrangements. This comprehensive new standard amends and supersedes existing lease accounting guidance and is intended to increase transparency and comparability among organizations by recognizing right-of-use (ROU) lease assets and lease liabilities on the balance sheet and requiring disclosure of key information about leasing arrangements. Lease expense continues to be recognized in a manner similar to legacy GAAP. The Company adopted the new lease standard on January 1, 2021 using the optional transition method to the modified retrospective approach. Under this transition provision, results for reporting periods beginning on January 1, 2021 are presented under Topic 842, while prior period amounts continue to be reported and disclosed in accordance with the Company&#x2019;s historical accounting treatment under ASC Topic 840, &lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Leases&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;. &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-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;To reduce the burden of adoption and ongoing compliance with Topic 842, a number of practical expedients and policy elections are available under the new guidance. The Company elected the "package of practical expedients" permitted under the transition guidance, which among other things, did not require reassessment of whether contracts entered into prior to adoption are or contain leases, and allowed carryforward of the historical lease classification for existing leases. The Company has not elected to adopt the &#x201c;hindsight&#x201d; practical expedient, and therefore will measure the ROU asset and lease liability using the remaining portion of the lease term at adoption on January 1, 2021.  &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-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company made an accounting policy election under Topic 842 not to recognize right-of-use (ROU) assets and lease liabilities for leases with a term of twelve months or less. For all other leases, the Company recognizes ROU assets and lease liabilities based on the present value of lease payments over the lease term at the commencement date of the lease (or January 1, 2021 for existing leases upon the adoption of Topic 842). The ROU assets also include any initial direct costs incurred and lease payments made at or before the commencement date and are reduced by any lease incentives.&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-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company&#x2019;s leases may include a non-lease component representing additional services transferred to the Company, such as common area maintenance for real estate. The Company made an accounting policy election to account for each separate lease component and the non-lease components associated with that lease component as a single lease component. As such, minimum lease payments include fixed payments for non-lease components within a lease agreement but exclude variable lease payments not dependent on an index or rate, such as common area maintenance, operating expenses, utilities, or other costs that are subject to fluctuation from period to period. Non-lease components that are variable in nature are recorded as variable lease expense in the period incurred.&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-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company uses its incremental borrowing rate to determine the present value of lease payments, as the Company&#x2019;s leases do not have a readily determinable implicit discount rate. The incremental borrowing rate is the rate of interest the Company would have to pay to borrow on a collateralized basis over a similar term and amount in a similar economic environment. Judgement is applied in assessing factors such as Company-specific credit risk, lease term, nature and quality of the underlying collateral, currency, and economic environment in determining the incremental borrowing rate to apply to each lease.&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-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Adoption of Topic 842 resulted in the recording of ROU assets and lease liabilities related to the Company&#x2019;s operating leases of approximately $2.8&#160;million and $3.1&#160;million, respectively, on January 1, 2021. The adoption of the new lease standard did not materially impact our consolidated net income or consolidated cash flows and did not result in a cumulative-effect adjustment to the opening balance of retained earnings.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In June 2016, FASB issued ASU No. 2016-13, &lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Financial Instruments &#x2013; Credit Losses (Topic 326): Measurement of Credit Losses on Financial Instruments&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; (ASU 2016-13). This update changes the accounting for recognizing impairments of financial assets, such that credit losses for certain types of financial instruments will be &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;estimated based on expected losses. The update also modifies the impairment models for available-for-sale debt securities and for purchased financial assets with credit deterioration since their origination. The Company adopted ASU 2016-13 as of January 1, 2021. The standard did not have any material impact on its consolidated financial statements. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In January 2017, the FASB issued ASU No. 2017-04, &lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Intangibles&#x2014;Goodwill and Other: Simplifying the Test for Goodwill Impairment&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; (ASU 2017-04). ASU 2017-04 eliminates Step 2 from the goodwill impairment test which measures a goodwill impairment loss by comparing the implied fair value of a reporting unit&#x2019;s goodwill with the carrying amount of that goodwill. Under ASU 2017-04, an entity should perform its annual or interim goodwill impairment test by comparing the fair value of the reporting unit with its carrying amount, and should recognize an impairment loss for the amount by which the carrying amount exceeds the reporting unit&#x2019;s fair value, with the loss not exceeding the total amount of goodwill allocated to that reporting unit. The Company adopted ASU 2017-04 as of January 1, 2021. The standard did not have any material impact on its consolidated financial statements.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In December 2019 the FASB issued ASU 2019-12&#x2014;Simplifying the Accounting for Income Taxes (ASU 2019-12). ASU 2019-12 simplifies the accounting for income taxes by removing certain exceptions to general principles in Topic 740 and clarifies and amends existing guidance for clarity and consistent application.The Company adopted ASU 2019-12 as of January 1, 2021. The standard did not have a material impact on the condensed consolidated financial statements and related disclosures.&lt;/span&gt;&lt;/div&gt;</us-gaap:NewAccountingPronouncementsPolicyPolicyTextBlock>
    <us-gaap:OperatingLeaseRightOfUseAsset
      contextRef="i3aabb66a84db411d8293407b434a6f44_I20210101"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90ZXh0cmVnaW9uOjJlYzdmZDRmY2M5ZDRlNThiMWU5NjQ5YmE5ZmM0Y2UzXzI3NDg3NzkxNjUyMzE_82d82fae-1c29-43c5-a979-a8810dd0fb81"
      unitRef="usd">2800000</us-gaap:OperatingLeaseRightOfUseAsset>
    <us-gaap:OperatingLeaseLiability
      contextRef="i3aabb66a84db411d8293407b434a6f44_I20210101"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDMvZnJhZzoyZWM3ZmQ0ZmNjOWQ0ZTU4YjFlOTY0OWJhOWZjNGNlMy90ZXh0cmVnaW9uOjJlYzdmZDRmY2M5ZDRlNThiMWU5NjQ5YmE5ZmM0Y2UzXzI3NDg3NzkxNjUyNDA_56effb96-dc5a-45aa-a502-7820d1f5e819"
      unitRef="usd">3100000</us-gaap:OperatingLeaseLiability>
    <us-gaap:FairValueDisclosuresTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90ZXh0cmVnaW9uOjdjMTUyOTBhNTliYjQ3ZWI5OGQ4ZDQ2MTcxYTBlYzE1XzMzMjk_792cc588-28ca-43a1-b276-7fda0a888331">Fair Value Measurements&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Assets and liabilities recorded at fair value on a recurring basis in the consolidated balance sheets are categorized based upon the level of judgment associated with the inputs used to measure their fair values. Fair value represents the price that would be received to sell an asset or paid to transfer a liability in an orderly transaction between market participants at the measurement date. Valuation techniques used to measure fair value must maximize the use of observable inputs and minimize the use of unobservable inputs. The authoritative guidance on fair value measurements establishes a three-tier fair value hierarchy for disclosure of fair value measurements as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;padding-left:36pt;text-indent:-18pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#x2022;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:14.5pt"&gt;Level I &#x2013; Inputs are unadjusted, quoted prices in active markets for identical assets or liabilities at the measurement date;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;padding-left:36pt;text-indent:-18pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#x2022;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:14.5pt"&gt;Level II &#x2013; Inputs are observable, unadjusted quoted prices in active markets for similar assets or liabilities, unadjusted quoted prices for identical or similar assets or liabilities in markets that are not active, or other inputs that are observable or can be corroborated by observable market data for substantially the full term of the related assets or liabilities; and&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;padding-left:36pt;text-indent:-18pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#x2022;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:14.5pt"&gt;Level III &#x2013; Unobservable inputs that are significant to the measurement of the fair value of the assets or liabilities that are supported by little or no market data.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;A financial instrument&#x2019;s categorization within the valuation hierarchy is based upon the lowest level of input that is significant to the fair value measurement. The Company&#x2019;s assessment of the significance of a particular input to the fair value measurement in its entirety requires management to make judgments and consider factors specific to the asset or liability.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;margin-top:15pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company&#x2019;s financial assets consist of Level I and II assets. The Company had no Level III assets or liabilities for the periods presented. The Company classifies its cash equivalents and marketable securities within Level I or Level II because they are valued using either quoted market prices or inputs other than quoted prices which are directly or indirectly observable in the market, including readily-available pricing sources for the identical underlying security which may not be actively traded. The Company&#x2019;s fixed income available-for-sale securities consist of high quality, investment grade securities from diverse issuers. The valuation techniques used to measure &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;margin-top:15pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;the fair value of the Company&#x2019;s marketable securities were derived from non-binding market consensus prices that are corroborated by observable market data and quoted market prices for similar instruments.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table sets forth the fair value of the Company&#x2019;s financial assets and liabilities measured on a recurring basis by level within the fair value hierarchy (in thousands): &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.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:51.464%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.278%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.278%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.278%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.279%"/&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="21" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;December 31, 2021&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 #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;Level I&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;Level II&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;Level III&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%"&gt;Financial Assets&lt;/span&gt;&lt;/td&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;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 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Money market funds&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;65,311&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;65,311&#160;&lt;/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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Certificates of deposit&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:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;5,942&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;5,942&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Cash equivalents&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;65,311&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;5,942&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;71,253&#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 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Commercial paper&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#x2014;&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;50,954&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#x2014;&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;50,954&#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 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;U.S. Treasury and government debt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;26,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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;26,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;/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:10pt;font-weight:400;line-height:120%"&gt;Marketable securities&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#x2014;&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;77,121&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#x2014;&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;77,121&#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 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Equity investment&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;5,948&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;5,948&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Non-current assets&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;5,948&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#x2014;&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#x2014;&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;5,948&#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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Total Financial Assets&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;71,259&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;83,063&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;154,322&#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 style="height:14pt"&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:3pt double #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:3pt double #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:3pt double #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:3pt double #000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="21" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;December 31, 2020&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 #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;Level I&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;Level II&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;Level III&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&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:10pt;font-weight:700;line-height:120%"&gt;Financial Assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="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:bottom"&gt;&lt;div style="padding-left:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Money market funds&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline"&gt;(1)&lt;/span&gt;&lt;/div&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;12,462&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;12,462&#160;&lt;/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;div style="padding-left:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Commercial paper&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline"&gt;(1)&lt;/span&gt;&lt;/div&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;7,199&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;7,199&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;12,462&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;7,199&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#x2014;&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;19,661&#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 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;U.S. Treasury and government debt securities&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;8,999&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;8,999&#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 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Commercial paper&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:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;10,794&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;10,794&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Marketable securities&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;19,793&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;19,793&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total Financial Assets&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;12,462&#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;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;26,992&#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;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#x2014;&#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;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;39,454&#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;&lt;div style="padding-left:18pt;text-indent:-18pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:120%"&gt;_______________&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.5pt;padding-left:18pt;text-indent:-18pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:120%"&gt;(1)&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:120%;padding-left:8.68pt"&gt;The amounts were previously combined and presented as cash equivalents. Prior periods have been reclassified to conform with current period presentation.&lt;/span&gt;&lt;/div&gt;</us-gaap:FairValueDisclosuresTextBlock>
    <us-gaap:ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90ZXh0cmVnaW9uOjdjMTUyOTBhNTliYjQ3ZWI5OGQ4ZDQ2MTcxYTBlYzE1XzMzMzA_131c9a87-85d1-4781-898b-b07cebbec75e">&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table sets forth the fair value of the Company&#x2019;s financial assets and liabilities measured on a recurring basis by level within the fair value hierarchy (in thousands): &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.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:51.464%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.278%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.278%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.278%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.279%"/&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="21" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;December 31, 2021&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 #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;Level I&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;Level II&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;Level III&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%"&gt;Financial Assets&lt;/span&gt;&lt;/td&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;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 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Money market funds&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;65,311&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;65,311&#160;&lt;/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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Certificates of deposit&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:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;5,942&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;5,942&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Cash equivalents&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;65,311&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;5,942&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;71,253&#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 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Commercial paper&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#x2014;&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;50,954&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#x2014;&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;50,954&#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 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;U.S. Treasury and government debt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;26,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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;26,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;/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:10pt;font-weight:400;line-height:120%"&gt;Marketable securities&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#x2014;&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;77,121&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#x2014;&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;77,121&#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 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Equity investment&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;5,948&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;5,948&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Non-current assets&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;5,948&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#x2014;&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#x2014;&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;5,948&#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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Total Financial Assets&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;71,259&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;83,063&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;154,322&#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 style="height:14pt"&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:3pt double #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:3pt double #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:3pt double #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:3pt double #000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="21" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;December 31, 2020&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 #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;Level I&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;Level II&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;Level III&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&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:10pt;font-weight:700;line-height:120%"&gt;Financial Assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="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:bottom"&gt;&lt;div style="padding-left:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Money market funds&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline"&gt;(1)&lt;/span&gt;&lt;/div&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;12,462&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;12,462&#160;&lt;/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;div style="padding-left:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Commercial paper&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline"&gt;(1)&lt;/span&gt;&lt;/div&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;7,199&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;7,199&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;12,462&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;7,199&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#x2014;&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;19,661&#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 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;U.S. Treasury and government debt securities&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;8,999&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;8,999&#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 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Commercial paper&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:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;10,794&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;10,794&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Marketable securities&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;19,793&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;19,793&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total Financial Assets&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;12,462&#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;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;26,992&#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;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#x2014;&#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;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;39,454&#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;&lt;div style="padding-left:18pt;text-indent:-18pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:120%"&gt;_______________&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.5pt;padding-left:18pt;text-indent:-18pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:120%"&gt;(1)&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:120%;padding-left:8.68pt"&gt;The amounts were previously combined and presented as cash equivalents. Prior periods have been reclassified to conform with current period presentation.&lt;/span&gt;&lt;/div&gt;</us-gaap:ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="ia637ba01ca1b4ca3814b34d96cb20958_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzMtMS0xLTEtMzA1OTg_ec257af5-6a50-44e5-9691-67d35560f1e4"
      unitRef="usd">65311000</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="i547a1b29d33d45e5b14647f2b5e7f390_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzMtMy0xLTEtMzA1OTg_b504dc93-d561-4f21-a071-b69a386080cc"
      unitRef="usd">0</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="if7aae0d1c66d4e4eaedbaa791e45427a_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzMtNS0xLTEtMzA1OTg_8f41ce12-6fda-491e-81ec-a6f5388e03a2"
      unitRef="usd">0</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="ic2bb03115a4a47d696ed953f2132d7d0_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzMtNy0xLTEtMzMwMTQ_979e7dcf-d7b4-40a0-a170-91988c2b283a"
      unitRef="usd">65311000</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="ia03f0e6b901943e5bcdd7772c1f61d92_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzQtMS0xLTEtMzA1OTg_3a311580-c2c8-4cde-ad30-c65e70ae7a7d"
      unitRef="usd">0</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="i44cd23d5caa347d39f03d64051dc8ddb_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzQtMy0xLTEtMzA1OTg_165f8df3-58ba-41a5-8920-409309118574"
      unitRef="usd">5942000</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="i80e7170a6bfe415aab120022e9d12c27_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzQtNS0xLTEtMzA1OTg_2f47973b-eee9-40c0-80fc-e194f7ec58df"
      unitRef="usd">0</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="id502e731d7c343539cba3acdd858f01d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzQtNy0xLTEtMzMwMTQ_41ce7197-26f3-4b9f-91a6-808089d7d50f"
      unitRef="usd">5942000</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="ib2132eb60fa4401cb3d4c2d60924f8ea_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzUtMS0xLTEtMzMwMTc_7398f175-89c2-4c5e-9233-047925a07dc5"
      unitRef="usd">65311000</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="i958cf2c0f0554d90b57c5a0f3f4d96f6_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzUtMy0xLTEtMzMwMTc_1f1b2066-5d36-4077-aad5-3bf1213f9bc1"
      unitRef="usd">5942000</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="i2574c958d13b403681f85b14a944fd8f_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzUtNS0xLTEtMzMwMTc_61ebea9a-2849-4f64-81f1-0f4a15258cf5"
      unitRef="usd">0</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="i3c5089ed58a94e05ad84115b277cc2e2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzUtNy0xLTEtMzA2MzY_31fec5ac-ea3e-4223-8ee9-f3a9928a4dce"
      unitRef="usd">71253000</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i3048cf46417546f58610106a7bbec1f7_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzYtMS0xLTEtMzA2MjM_b5ebc933-f588-4472-9411-4459dca9fdfa"
      unitRef="usd">0</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="if41d873f10394aa09a031a9ebd409ee7_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzYtMy0xLTEtMzA2MjM_ec76d25c-99e2-47d3-b431-33e1db8be633"
      unitRef="usd">50954000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i5c2bc37215214e65b0f833439b594161_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzYtNS0xLTEtMzA2MjM_5e8f4eaa-d57e-46bc-b06d-8e601fd78d11"
      unitRef="usd">0</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i7c38e7c03bad4ce3a114a626610df57f_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzYtNy0xLTEtMzA2Mjc_47317cd7-b132-4d04-97ad-9bea5d771b1b"
      unitRef="usd">50954000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="ib6969a77a50d491880c0ef6c860c6a14_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzctMS0xLTEtMzA2MjM_94bf18eb-d31c-419c-8e1f-98c31ab6117b"
      unitRef="usd">0</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i4b98c704f0f347ab9c2a695bbb2db812_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzctMy0xLTEtMzA2MjM_714ef587-1108-4d13-986d-ae933f5c5b89"
      unitRef="usd">26167000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i5e68b133584145da98753509deddf0d7_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzctNS0xLTEtMzA2MjM_42b6bcbb-1e49-4a8d-9bc6-00d6d0547d13"
      unitRef="usd">0</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="id40887e99b9a47d49a50be9692016979_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzctNy0xLTEtMzA2Mjk_e69ca24d-5674-4b0c-ba6a-a0b0ecf5b740"
      unitRef="usd">26167000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i2791467b6caf4d0ba57f185db1cea11c_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzgtMS0xLTEtMzMwMjM_76eb6256-bbf8-40c3-8afb-a35cb027d91d"
      unitRef="usd">0</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="iae1ba3ef21ca4e3fbd1c01ee6d5f1a29_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzgtMy0xLTEtMzMwMjM_8e0a0177-89f5-41d0-97d5-6443aa07aaba"
      unitRef="usd">77121000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i0f72b3405815447683b09fae3c356a60_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzgtNS0xLTEtMzMwMjM_ce8eefb4-aa2d-4b5c-b360-7cf83b2df2a6"
      unitRef="usd">0</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i513fc5801e4e4f1e997c9751c5609f89_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzgtNy0xLTEtMzA2Mzc_87da026e-1fdb-4bc5-9c84-7896ed25ad41"
      unitRef="usd">77121000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:EquityMethodInvestmentsFairValueDisclosure
      contextRef="i2791467b6caf4d0ba57f185db1cea11c_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzktMS0xLTEtMzgyMTk_a42bb54b-249a-462c-a770-b280a03b1fd1"
      unitRef="usd">5948000</us-gaap:EquityMethodInvestmentsFairValueDisclosure>
    <us-gaap:EquityMethodInvestmentsFairValueDisclosure
      contextRef="iae1ba3ef21ca4e3fbd1c01ee6d5f1a29_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzktMy0xLTEtMzgyMTk_0dd635bd-5744-4567-af5b-42f8a28475c6"
      unitRef="usd">0</us-gaap:EquityMethodInvestmentsFairValueDisclosure>
    <us-gaap:EquityMethodInvestmentsFairValueDisclosure
      contextRef="i0f72b3405815447683b09fae3c356a60_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzktNS0xLTEtMzgyMTk_59d6a2bd-ea39-449e-8cb5-f0e226ec9824"
      unitRef="usd">0</us-gaap:EquityMethodInvestmentsFairValueDisclosure>
    <us-gaap:EquityMethodInvestmentsFairValueDisclosure
      contextRef="i513fc5801e4e4f1e997c9751c5609f89_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzktNy0xLTEtMzgyMTk_9fd5100f-664b-4568-b227-7caa04df25ae"
      unitRef="usd">5948000</us-gaap:EquityMethodInvestmentsFairValueDisclosure>
    <us-gaap:OtherAssetsFairValueDisclosure
      contextRef="i2791467b6caf4d0ba57f185db1cea11c_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzEwLTEtMS0xLTM4MjE5_c030f912-727e-497d-b131-eb84bec929ce"
      unitRef="usd">5948000</us-gaap:OtherAssetsFairValueDisclosure>
    <us-gaap:OtherAssetsFairValueDisclosure
      contextRef="iae1ba3ef21ca4e3fbd1c01ee6d5f1a29_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzEwLTMtMS0xLTM4MjE5_c010176c-b5f7-4847-900b-e25f2047faa0"
      unitRef="usd">0</us-gaap:OtherAssetsFairValueDisclosure>
    <us-gaap:OtherAssetsFairValueDisclosure
      contextRef="i0f72b3405815447683b09fae3c356a60_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzEwLTUtMS0xLTM4MjE5_4bed8750-0729-487a-8c09-0f3b120d48bc"
      unitRef="usd">0</us-gaap:OtherAssetsFairValueDisclosure>
    <us-gaap:OtherAssetsFairValueDisclosure
      contextRef="i513fc5801e4e4f1e997c9751c5609f89_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzEwLTctMS0xLTM4MjE5_5f8b05f7-82e9-426b-85db-fe495fdc0647"
      unitRef="usd">5948000</us-gaap:OtherAssetsFairValueDisclosure>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="i2791467b6caf4d0ba57f185db1cea11c_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzktMS0xLTEtMzMwMjM_edbcfbeb-43d3-4367-bade-cd4cdcede341"
      unitRef="usd">71259000</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="iae1ba3ef21ca4e3fbd1c01ee6d5f1a29_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzktMy0xLTEtMzMwMjM_9e729279-268a-4c20-be71-242bab82919c"
      unitRef="usd">83063000</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="i0f72b3405815447683b09fae3c356a60_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzktNS0xLTEtMzMwMjM_8c6882a9-46e4-4556-874d-217c31ecdea2"
      unitRef="usd">0</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="i513fc5801e4e4f1e997c9751c5609f89_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzktNy0xLTEtMzMwMjM_3b2d0bdc-64e3-410a-bf25-077708dc9d8d"
      unitRef="usd">154322000</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="i9a850352caab480784e36855e124e597_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzE0LTEtMS0xLTMwNjQ4_47aaafd7-13ef-4864-9e89-9871484a1d6b"
      unitRef="usd">12462000</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="ia14085a1c9c744bf94fe2c59f3c5c2f8_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzE0LTMtMS0xLTMwNjQ4_3d332cc0-8a1c-416d-99d1-6a604ae61b1a"
      unitRef="usd">0</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="i5ef2fb73385544bf845dedb1c193ddbf_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzE0LTUtMS0xLTMwNjQ4_a1925736-19ec-4018-81da-b4ba4b2f276d"
      unitRef="usd">0</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="i40cd4af0b0394beb9ee543d82b98604b_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzE0LTctMS0xLTMzMDM1_51f53d3f-a556-4920-83e5-fdff2790c3cf"
      unitRef="usd">12462000</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="i160a502810a94db89b22d4e027f7adb7_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzE1LTEtMS0xLTMwNjQ4_5957189d-2862-4544-956f-e5cf73cfc0cd"
      unitRef="usd">0</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="if009a6291e634740aa3a05a26e2d9bd8_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzE1LTMtMS0xLTMwNjQ4_9ae65eb6-249a-41c2-853f-1bc2f3d3a421"
      unitRef="usd">7199000</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="i1e4059043e38496093b715533194b0a7_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzE1LTUtMS0xLTMwNjQ4_e7b875fc-47d6-406c-b27f-5cbfb005eee2"
      unitRef="usd">0</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="i170517e1a29a4729911136259af0884f_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzE1LTctMS0xLTMzMDM1_5de48ef5-ed46-4d5b-8204-0c809cc4ddc6"
      unitRef="usd">7199000</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="iac98b3e2c43743e3a521b36308670642_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzE2LTEtMS0xLTMzMDM1_0cbc20ce-e174-4567-984d-b2778ea6c889"
      unitRef="usd">12462000</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="i7a888e2c6ca0480f86604c8b69bb71e3_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzE2LTMtMS0xLTMzMDM1_169bc51f-56bd-4c81-b7ce-4ab6eeb6de5c"
      unitRef="usd">7199000</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="if066cd4982aa4bc4bd50f27136a0a29c_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzE2LTUtMS0xLTMzMDM1_777ddec7-3b79-4258-bc2e-2ff38357e129"
      unitRef="usd">0</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="ic0fe912d85ad447190a4fcd46be26f4f_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzE2LTctMS0xLTMzMDM1_b6e3988a-3525-4931-8f43-5c3476c896be"
      unitRef="usd">19661000</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i2bdcea0ea0594790accf906db310ce67_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzE3LTEtMS0xLTMwNjU0_75e54dc0-c290-4fc2-a77e-5dfe0cc0a945"
      unitRef="usd">0</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="if97642a43acd451fbf53f217b621532e_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzE3LTMtMS0xLTMwNjU0_75263127-90fb-4de1-a732-49bde96caf63"
      unitRef="usd">8999000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i2fa624018dda41b3bc58b18041c66801_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzE3LTUtMS0xLTMwNjU0_c4a2a222-a436-4af5-9e6d-6a97a61abeee"
      unitRef="usd">0</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i7b548adb13a640d9af2b07dd55e94c8f_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzE3LTctMS0xLTMzMDM1_323e7704-0956-44dd-84b3-29385ae2a906"
      unitRef="usd">8999000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="ia9aa9810f64a40478ec00c1fb76b3241_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzE4LTEtMS0xLTMwNjU0_2f002ef4-ba3f-4551-8d51-4c3cc3a978a1"
      unitRef="usd">0</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="ib549e69233c7457eb58a308a107bdc9a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzE4LTMtMS0xLTMwNjU0_ae3cbc50-f6b3-4ee1-9151-b5cfa3570403"
      unitRef="usd">10794000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="ic1a587ea583e405485402f7c45c5cd82_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzE4LTUtMS0xLTMwNjU0_a2476f8a-eeb3-44e3-86ff-801e5c524795"
      unitRef="usd">0</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i02cb25b5a4bf488a9ce3a0b417ea3b1b_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzE4LTctMS0xLTMzMDM1_adbb3958-b4bb-4642-b8c8-899f5f4b024f"
      unitRef="usd">10794000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i5aae89afa7d04685ad4775aa93b1ad74_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzE5LTEtMS0xLTMzMDM1_bbfd3347-105b-4179-8caf-533252c14176"
      unitRef="usd">0</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i56312a22ca3b4242b09fcd9c57f04c2a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzE5LTMtMS0xLTMzMDM1_e548183b-0147-4bd6-9154-b8235b1296c4"
      unitRef="usd">19793000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i796b7759cb6d4b08975b8a8c6a44f5d4_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzE5LTUtMS0xLTMzMDM1_3642a6c0-d166-4ade-a008-218596c5594e"
      unitRef="usd">0</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i219a297fa68b4c978cfde42641d9d813_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzE5LTctMS0xLTMzMDM1_13cc64ff-ff10-4592-93b5-57f3ec76de0e"
      unitRef="usd">19793000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="i5aae89afa7d04685ad4775aa93b1ad74_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzIwLTEtMS0xLTMzMDM1_cf7dd857-e4ae-4ffd-a589-6f12383b6d1e"
      unitRef="usd">12462000</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="i56312a22ca3b4242b09fcd9c57f04c2a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzIwLTMtMS0xLTMzMDM1_92b53a28-e591-423e-bae9-26ff1cbd92b0"
      unitRef="usd">26992000</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="i796b7759cb6d4b08975b8a8c6a44f5d4_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzIwLTUtMS0xLTMzMDM1_5355ccdc-4827-4360-bcd4-fc09ad519a18"
      unitRef="usd">0</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="i219a297fa68b4c978cfde42641d9d813_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDYvZnJhZzo3YzE1MjkwYTU5YmI0N2ViOThkOGQ0NjE3MWEwZWMxNS90YWJsZTo0ZDM4OWYxODQ0Mjc0MGJjODEzMzFmNzE3ZTRjMGE3Yi90YWJsZXJhbmdlOjRkMzg5ZjE4NDQyNzQwYmM4MTMzMWY3MTdlNGMwYTdiXzIwLTctMS0xLTMzMDM1_cf2878c9-f13b-40ce-be18-1ed09d175d0f"
      unitRef="usd">39454000</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:SupplementalBalanceSheetDisclosuresTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90ZXh0cmVnaW9uOjkwOTc5ODRlNzg0NTQzZjdiMzUwYjBlMTYxYTE5YWUwXzE2ODg_3b9f3607-2afb-4c7f-a11c-88a6c2e3304d">Balance Sheet Components&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Marketable Securities&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the Company&#x2019;s marketable securities by significant investment categories (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.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:45.694%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.720%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.720%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.720%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.723%"/&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="21" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;December 31, 2021&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 #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;Amortized Cost&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;Gross Unrealized Gains&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;Gross Unrealized Loss&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;Fair Value&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Commercial paper&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:'Times New Roman',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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;50,954&#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:'Times New Roman',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:'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;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:'Times New Roman',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:'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;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:'Times New Roman',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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;50,954&#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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;U.S. Treasury and government debt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;26,203&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'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:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(36)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;26,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;/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:10pt;font-weight:400;line-height:120%"&gt;Total&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;77,157&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#x2014;&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;(36)&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;77,121&#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 style="height:15pt"&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 #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:3pt double #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:3pt double #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:3pt double #000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="21" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;December 31, 2020&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 #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;Amortized Cost&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;Gross Unrealized Gains&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;Gross Unrealized Loss&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;Fair Value&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Commercial paper&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:'Times New Roman',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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;10,794&#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:'Times New Roman',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:'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;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:'Times New Roman',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:'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;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:'Times New Roman',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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;10,794&#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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;U.S. Treasury and government debt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;8,998&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',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:'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:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;8,999&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Total&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;19,792&#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;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;1&#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;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#x2014;&#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;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;19,793&#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;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The remaining contractual maturity of all marketable securities was within one year as of December&#160;31, 2021 and 2020. Realized gains and losses were not material for the years ended December&#160;31, 2021, 2020 and 2019. As of December&#160;31, 2021 and 2020, there were no securities that were in an unrealized loss position for more than twelve months.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Property, Equipment and Software, Net&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Property, equipment and software, net consists of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.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:70.374%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.842%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.843%"/&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:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;December 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="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Internal-use software&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;30,581&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;24,513&#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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Network hardware, computer equipment and software&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;92,561&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;62,764&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Leasehold 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2,426&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;1,249&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Furniture and fixtures&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;1,448&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;621&#160;&lt;/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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Property, equipment and software, gross&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;127,016&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;89,147&#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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Less: accumulated depreciation and amortization&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;(76,876)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;(59,103)&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Total property, equipment and software, net&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;50,140&#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;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;30,044&#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;&lt;div style="margin-bottom:12pt;margin-top:15pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Depreciation and amortization expense related to property, equipment, and software (excluding amortization of internal use software) was $15.7&#160;million, $9.8 million, and $6.9 million for the years ended December&#160;31, 2021, 2020 and 2019, respectively.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company capitalized $10.3&#160;million, $7.3 million, and $6.0 million in software development costs during the years ended December&#160;31, 2021, 2020 and 2019, respectively. Amortization expense of internal use &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;software was $7.4&#160;million, $5.9 million, and $5.4 million for the years ended December&#160;31, 2021, 2020 and 2019, respectively. These costs are included within cost of revenue in the consolidated statements of operations and comprehensive income. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company did not recognize any impairment charges on its long-lived assets during the year ended December&#160;31, 2021 and 2020. During the year ended December&#160;31, 2019 the Company discontinued offering its Unified Ad Server product which is part of capitalized software development and recorded a $0.7 million impairment charge in cost of revenue in the Company&#x2019;s consolidated statement of operations and comprehensive income.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Accounts Payable &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Accounts payable consists of the following (in thousands):&lt;/span&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:70.374%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.842%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.843%"/&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:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 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="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Payable to publishers&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;235,440&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;168,673&#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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Trade payables&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;8,881&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;8,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 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Total accounts payable&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;244,321&#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;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;176,731&#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;&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Accrued Expenses&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Accrued expenses consist of the following (in thousands):&lt;/span&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:70.374%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.842%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.843%"/&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:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;December 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="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Accrued 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;17,271&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;13,352&#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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Accrued and other current liabilities&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;1,509&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;1,492&#160;&lt;/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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Total accrued expenses&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;18,780&#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;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;14,844&#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:SupplementalBalanceSheetDisclosuresTextBlock>
    <us-gaap:DebtSecuritiesAvailableForSaleTableTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90ZXh0cmVnaW9uOjkwOTc5ODRlNzg0NTQzZjdiMzUwYjBlMTYxYTE5YWUwXzE2ODk_378ea435-a8b5-4f3a-a1a2-7ee651da3dc5">&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the Company&#x2019;s marketable securities by significant investment categories (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.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:45.694%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.720%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.720%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.720%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.723%"/&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="21" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;December 31, 2021&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 #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;Amortized Cost&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;Gross Unrealized Gains&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;Gross Unrealized Loss&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;Fair Value&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Commercial paper&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:'Times New Roman',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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;50,954&#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:'Times New Roman',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:'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;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:'Times New Roman',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:'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;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:'Times New Roman',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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;50,954&#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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;U.S. Treasury and government debt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;26,203&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'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:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(36)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;26,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;/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:10pt;font-weight:400;line-height:120%"&gt;Total&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;77,157&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#x2014;&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;(36)&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;77,121&#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 style="height:15pt"&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 #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:3pt double #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:3pt double #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:3pt double #000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="21" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;December 31, 2020&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 #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;Amortized Cost&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;Gross Unrealized Gains&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;Gross Unrealized Loss&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;Fair Value&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Commercial paper&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:'Times New Roman',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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;10,794&#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:'Times New Roman',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:'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;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:'Times New Roman',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:'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;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:'Times New Roman',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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;10,794&#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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;U.S. Treasury and government debt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;8,998&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',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:'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:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;8,999&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Total&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;19,792&#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;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;1&#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;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#x2014;&#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;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;19,793&#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:DebtSecuritiesAvailableForSaleTableTextBlock>
    <us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostCurrent
      contextRef="i29be720ae26f4a8a8ea0ad7848dd9f61_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90YWJsZTo0MjVkZmJkNzkxOTU0MjMzODIxZjFhNGUxNDM1ZTZhOS90YWJsZXJhbmdlOjQyNWRmYmQ3OTE5NTQyMzM4MjFmMWE0ZTE0MzVlNmE5XzItMS0xLTEtMjgxMDU_a61d4cca-f018-43a9-8b66-033f29c42c3a"
      unitRef="usd">50954000</us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostCurrent>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="i29be720ae26f4a8a8ea0ad7848dd9f61_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90YWJsZTo0MjVkZmJkNzkxOTU0MjMzODIxZjFhNGUxNDM1ZTZhOS90YWJsZXJhbmdlOjQyNWRmYmQ3OTE5NTQyMzM4MjFmMWE0ZTE0MzVlNmE5XzItMy0xLTEtMjgxMDU_bdba4c8f-39c7-4637-b1a6-7308b694b58e"
      unitRef="usd">0</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i29be720ae26f4a8a8ea0ad7848dd9f61_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90YWJsZTo0MjVkZmJkNzkxOTU0MjMzODIxZjFhNGUxNDM1ZTZhOS90YWJsZXJhbmdlOjQyNWRmYmQ3OTE5NTQyMzM4MjFmMWE0ZTE0MzVlNmE5XzItNS0xLTEtMjgxMDU_0ce287a3-ef5c-4316-949a-3d660e40d359"
      unitRef="usd">0</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="i29be720ae26f4a8a8ea0ad7848dd9f61_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90YWJsZTo0MjVkZmJkNzkxOTU0MjMzODIxZjFhNGUxNDM1ZTZhOS90YWJsZXJhbmdlOjQyNWRmYmQ3OTE5NTQyMzM4MjFmMWE0ZTE0MzVlNmE5XzItNy0xLTEtMjgxMDU_bcbfdb3a-8a01-4a3e-a34f-6367956a45d1"
      unitRef="usd">50954000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostCurrent
      contextRef="ie58014ce0a3d41cfb716c9803b95943b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90YWJsZTo0MjVkZmJkNzkxOTU0MjMzODIxZjFhNGUxNDM1ZTZhOS90YWJsZXJhbmdlOjQyNWRmYmQ3OTE5NTQyMzM4MjFmMWE0ZTE0MzVlNmE5XzMtMS0xLTEtMjgxMDU_8c99b85e-da76-4330-8d33-389ef3213585"
      unitRef="usd">26203000</us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostCurrent>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="ie58014ce0a3d41cfb716c9803b95943b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90YWJsZTo0MjVkZmJkNzkxOTU0MjMzODIxZjFhNGUxNDM1ZTZhOS90YWJsZXJhbmdlOjQyNWRmYmQ3OTE5NTQyMzM4MjFmMWE0ZTE0MzVlNmE5XzMtMy0xLTEtMjgxMDU_8956fd18-222b-48a4-ac88-944335c76d40"
      unitRef="usd">0</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="ie58014ce0a3d41cfb716c9803b95943b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90YWJsZTo0MjVkZmJkNzkxOTU0MjMzODIxZjFhNGUxNDM1ZTZhOS90YWJsZXJhbmdlOjQyNWRmYmQ3OTE5NTQyMzM4MjFmMWE0ZTE0MzVlNmE5XzMtNS0xLTEtMjgxMDU_4ed539f0-202b-4622-9387-a0f928d98b7e"
      unitRef="usd">36000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="ie58014ce0a3d41cfb716c9803b95943b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90YWJsZTo0MjVkZmJkNzkxOTU0MjMzODIxZjFhNGUxNDM1ZTZhOS90YWJsZXJhbmdlOjQyNWRmYmQ3OTE5NTQyMzM4MjFmMWE0ZTE0MzVlNmE5XzMtNy0xLTEtMjgxMDU_0d113181-b1ea-4082-bc3b-ecc56bf44216"
      unitRef="usd">26167000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostCurrent
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90YWJsZTo0MjVkZmJkNzkxOTU0MjMzODIxZjFhNGUxNDM1ZTZhOS90YWJsZXJhbmdlOjQyNWRmYmQ3OTE5NTQyMzM4MjFmMWE0ZTE0MzVlNmE5XzQtMS0xLTEtMjgyMzU_d2dab1f7-2743-49f2-9776-72a39682359b"
      unitRef="usd">77157000</us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostCurrent>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90YWJsZTo0MjVkZmJkNzkxOTU0MjMzODIxZjFhNGUxNDM1ZTZhOS90YWJsZXJhbmdlOjQyNWRmYmQ3OTE5NTQyMzM4MjFmMWE0ZTE0MzVlNmE5XzQtMy0xLTEtMjgyMzU_32e32366-8821-4c58-a633-a2b196113727"
      unitRef="usd">0</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90YWJsZTo0MjVkZmJkNzkxOTU0MjMzODIxZjFhNGUxNDM1ZTZhOS90YWJsZXJhbmdlOjQyNWRmYmQ3OTE5NTQyMzM4MjFmMWE0ZTE0MzVlNmE5XzQtNS0xLTEtMjgyMzU_1093a5c9-8bb5-4ab0-a47d-b03b9ff51293"
      unitRef="usd">36000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90YWJsZTo0MjVkZmJkNzkxOTU0MjMzODIxZjFhNGUxNDM1ZTZhOS90YWJsZXJhbmdlOjQyNWRmYmQ3OTE5NTQyMzM4MjFmMWE0ZTE0MzVlNmE5XzQtNy0xLTEtMjgyMzU_d7d1c1f6-5c39-4600-aea6-a053b3719629"
      unitRef="usd">77121000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostCurrent
      contextRef="i5b519d38ba6f46f58801bdfb86914877_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90YWJsZTo0MjVkZmJkNzkxOTU0MjMzODIxZjFhNGUxNDM1ZTZhOS90YWJsZXJhbmdlOjQyNWRmYmQ3OTE5NTQyMzM4MjFmMWE0ZTE0MzVlNmE5XzgtMS0xLTEtMjgxMDU_23ca4bab-0dab-46dd-b250-66f72630d65a"
      unitRef="usd">10794000</us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostCurrent>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="i5b519d38ba6f46f58801bdfb86914877_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90YWJsZTo0MjVkZmJkNzkxOTU0MjMzODIxZjFhNGUxNDM1ZTZhOS90YWJsZXJhbmdlOjQyNWRmYmQ3OTE5NTQyMzM4MjFmMWE0ZTE0MzVlNmE5XzgtMy0xLTEtMjgxMDU_1dbd72e4-70c3-4430-9ed4-ea6809fbc544"
      unitRef="usd">0</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i5b519d38ba6f46f58801bdfb86914877_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90YWJsZTo0MjVkZmJkNzkxOTU0MjMzODIxZjFhNGUxNDM1ZTZhOS90YWJsZXJhbmdlOjQyNWRmYmQ3OTE5NTQyMzM4MjFmMWE0ZTE0MzVlNmE5XzgtNS0xLTEtMjgxMDU_4d641eb2-49ee-4c7a-8e35-dd30cd0a667f"
      unitRef="usd">0</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="i5b519d38ba6f46f58801bdfb86914877_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90YWJsZTo0MjVkZmJkNzkxOTU0MjMzODIxZjFhNGUxNDM1ZTZhOS90YWJsZXJhbmdlOjQyNWRmYmQ3OTE5NTQyMzM4MjFmMWE0ZTE0MzVlNmE5XzgtNy0xLTEtMjgxMDU_7e27e839-e8da-4344-acf1-d45276c9d49b"
      unitRef="usd">10794000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostCurrent
      contextRef="i1db67ff3499b45678a4dcf64727f5caf_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90YWJsZTo0MjVkZmJkNzkxOTU0MjMzODIxZjFhNGUxNDM1ZTZhOS90YWJsZXJhbmdlOjQyNWRmYmQ3OTE5NTQyMzM4MjFmMWE0ZTE0MzVlNmE5XzktMS0xLTEtMjgxMDU_e04dec91-e48b-4337-9c56-b93f24bda797"
      unitRef="usd">8998000</us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostCurrent>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="i1db67ff3499b45678a4dcf64727f5caf_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90YWJsZTo0MjVkZmJkNzkxOTU0MjMzODIxZjFhNGUxNDM1ZTZhOS90YWJsZXJhbmdlOjQyNWRmYmQ3OTE5NTQyMzM4MjFmMWE0ZTE0MzVlNmE5XzktMy0xLTEtMjgxMDU_6a75b034-dc3b-44e1-9bf9-9dbf21daf182"
      unitRef="usd">1000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i1db67ff3499b45678a4dcf64727f5caf_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90YWJsZTo0MjVkZmJkNzkxOTU0MjMzODIxZjFhNGUxNDM1ZTZhOS90YWJsZXJhbmdlOjQyNWRmYmQ3OTE5NTQyMzM4MjFmMWE0ZTE0MzVlNmE5XzktNS0xLTEtMjgxMDU_a2198c6b-b9de-4ffd-8f79-a51db2cf67ba"
      unitRef="usd">0</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="i1db67ff3499b45678a4dcf64727f5caf_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90YWJsZTo0MjVkZmJkNzkxOTU0MjMzODIxZjFhNGUxNDM1ZTZhOS90YWJsZXJhbmdlOjQyNWRmYmQ3OTE5NTQyMzM4MjFmMWE0ZTE0MzVlNmE5XzktNy0xLTEtMjgxMDU_125aa5b3-3b8a-4cdb-a2f4-8a3523d70d35"
      unitRef="usd">8999000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostCurrent
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90YWJsZTo0MjVkZmJkNzkxOTU0MjMzODIxZjFhNGUxNDM1ZTZhOS90YWJsZXJhbmdlOjQyNWRmYmQ3OTE5NTQyMzM4MjFmMWE0ZTE0MzVlNmE5XzEwLTEtMS0xLTI4MjM5_4fe3a5d5-49bd-4120-b069-b2b3d46f67cc"
      unitRef="usd">19792000</us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostCurrent>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90YWJsZTo0MjVkZmJkNzkxOTU0MjMzODIxZjFhNGUxNDM1ZTZhOS90YWJsZXJhbmdlOjQyNWRmYmQ3OTE5NTQyMzM4MjFmMWE0ZTE0MzVlNmE5XzEwLTMtMS0xLTI4MjM5_dea1d89a-ad02-4b32-8481-a0a3a947df6b"
      unitRef="usd">1000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90YWJsZTo0MjVkZmJkNzkxOTU0MjMzODIxZjFhNGUxNDM1ZTZhOS90YWJsZXJhbmdlOjQyNWRmYmQ3OTE5NTQyMzM4MjFmMWE0ZTE0MzVlNmE5XzEwLTUtMS0xLTI4MjM5_3c4ab0ed-6327-4579-b3bb-ae700e1b2d1d"
      unitRef="usd">0</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90YWJsZTo0MjVkZmJkNzkxOTU0MjMzODIxZjFhNGUxNDM1ZTZhOS90YWJsZXJhbmdlOjQyNWRmYmQ3OTE5NTQyMzM4MjFmMWE0ZTE0MzVlNmE5XzEwLTctMS0xLTI4MjM5_51c044b6-d6f0-47ea-90d4-312845637707"
      unitRef="usd">19793000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:PropertyPlantAndEquipmentTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90ZXh0cmVnaW9uOjkwOTc5ODRlNzg0NTQzZjdiMzUwYjBlMTYxYTE5YWUwXzE2OTA_3647d5f3-a621-4fdc-8e71-06e9993b1875">&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Property, equipment and software, net consists of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.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:70.374%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.842%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.843%"/&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:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;December 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="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Internal-use software&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;30,581&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;24,513&#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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Network hardware, computer equipment and software&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;92,561&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;62,764&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Leasehold 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2,426&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;1,249&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Furniture and fixtures&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;1,448&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;621&#160;&lt;/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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Property, equipment and software, gross&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;127,016&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;89,147&#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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Less: accumulated depreciation and amortization&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;(76,876)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;(59,103)&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Total property, equipment and software, net&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;50,140&#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;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;30,044&#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:PropertyPlantAndEquipmentTextBlock>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i40e8e0cdaf6d4688a6e46b8659c27c58_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90YWJsZTo5MTJhNzJhMzgyMWY0ZmM0YTg4MTMwYmRmM2ZjZjExYy90YWJsZXJhbmdlOjkxMmE3MmEzODIxZjRmYzRhODgxMzBiZGYzZmNmMTFjXzItMS0xLTEtMjgxMDU_12f54479-f3ec-4ca3-a850-95c7765c8f46"
      unitRef="usd">30581000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="ia7de109ecbbe4350b15abb00600ac8ff_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90YWJsZTo5MTJhNzJhMzgyMWY0ZmM0YTg4MTMwYmRmM2ZjZjExYy90YWJsZXJhbmdlOjkxMmE3MmEzODIxZjRmYzRhODgxMzBiZGYzZmNmMTFjXzItMy0xLTEtMjgxMDU_834a425a-95a8-49e8-bb59-0f73edd91032"
      unitRef="usd">24513000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i1c2b1b3df0bb4906a55a8a8d6b87f287_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90YWJsZTo5MTJhNzJhMzgyMWY0ZmM0YTg4MTMwYmRmM2ZjZjExYy90YWJsZXJhbmdlOjkxMmE3MmEzODIxZjRmYzRhODgxMzBiZGYzZmNmMTFjXzMtMS0xLTEtMjgxMDU_b2e64def-fff3-4a34-95e8-825067febebc"
      unitRef="usd">92561000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="ic98d76631c9d45c2976c3cf3301c4360_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90YWJsZTo5MTJhNzJhMzgyMWY0ZmM0YTg4MTMwYmRmM2ZjZjExYy90YWJsZXJhbmdlOjkxMmE3MmEzODIxZjRmYzRhODgxMzBiZGYzZmNmMTFjXzMtMy0xLTEtMjgxMDU_ed0a44f4-0f20-40b8-95c2-fa652ca77981"
      unitRef="usd">62764000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i5dfb88b3fd184c9cba6e598f3685ef92_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90YWJsZTo5MTJhNzJhMzgyMWY0ZmM0YTg4MTMwYmRmM2ZjZjExYy90YWJsZXJhbmdlOjkxMmE3MmEzODIxZjRmYzRhODgxMzBiZGYzZmNmMTFjXzQtMS0xLTEtMjgxMDU_07db254d-8136-474f-8e85-50f700c05cb1"
      unitRef="usd">2426000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i5c4e1345c44b46608fcd8fb0dfaa894f_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90YWJsZTo5MTJhNzJhMzgyMWY0ZmM0YTg4MTMwYmRmM2ZjZjExYy90YWJsZXJhbmdlOjkxMmE3MmEzODIxZjRmYzRhODgxMzBiZGYzZmNmMTFjXzQtMy0xLTEtMjgxMDU_32b1fd33-24ff-417e-8e93-2948063b1cb6"
      unitRef="usd">1249000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="ibeae8680824f4ca689a36fa3b0a0c5e7_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90YWJsZTo5MTJhNzJhMzgyMWY0ZmM0YTg4MTMwYmRmM2ZjZjExYy90YWJsZXJhbmdlOjkxMmE3MmEzODIxZjRmYzRhODgxMzBiZGYzZmNmMTFjXzUtMS0xLTEtMjgxMDU_86759283-52dd-4ee9-8c68-75d1660ddc34"
      unitRef="usd">1448000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i63b9eede794c4445ab1c2d5e0cb98d35_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90YWJsZTo5MTJhNzJhMzgyMWY0ZmM0YTg4MTMwYmRmM2ZjZjExYy90YWJsZXJhbmdlOjkxMmE3MmEzODIxZjRmYzRhODgxMzBiZGYzZmNmMTFjXzUtMy0xLTEtMjgxMDU_18725af4-2170-4951-af5e-37ee8bdf7894"
      unitRef="usd">621000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90YWJsZTo5MTJhNzJhMzgyMWY0ZmM0YTg4MTMwYmRmM2ZjZjExYy90YWJsZXJhbmdlOjkxMmE3MmEzODIxZjRmYzRhODgxMzBiZGYzZmNmMTFjXzYtMS0xLTEtMjgxMDU_61f4ba5e-c937-4661-8072-8ba9d471c043"
      unitRef="usd">127016000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90YWJsZTo5MTJhNzJhMzgyMWY0ZmM0YTg4MTMwYmRmM2ZjZjExYy90YWJsZXJhbmdlOjkxMmE3MmEzODIxZjRmYzRhODgxMzBiZGYzZmNmMTFjXzYtMy0xLTEtMjgxMDU_90852277-fec3-4c34-8c85-b457eb69a853"
      unitRef="usd">89147000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90YWJsZTo5MTJhNzJhMzgyMWY0ZmM0YTg4MTMwYmRmM2ZjZjExYy90YWJsZXJhbmdlOjkxMmE3MmEzODIxZjRmYzRhODgxMzBiZGYzZmNmMTFjXzctMS0xLTEtMjgxMDU_8eeb9ade-1760-4e1e-bff9-d093201f6b19"
      unitRef="usd">76876000</us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment>
    <us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90YWJsZTo5MTJhNzJhMzgyMWY0ZmM0YTg4MTMwYmRmM2ZjZjExYy90YWJsZXJhbmdlOjkxMmE3MmEzODIxZjRmYzRhODgxMzBiZGYzZmNmMTFjXzctMy0xLTEtMjgxMDU_93c898db-e4d1-495f-a043-73762f38498c"
      unitRef="usd">59103000</us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90YWJsZTo5MTJhNzJhMzgyMWY0ZmM0YTg4MTMwYmRmM2ZjZjExYy90YWJsZXJhbmdlOjkxMmE3MmEzODIxZjRmYzRhODgxMzBiZGYzZmNmMTFjXzgtMS0xLTEtMjgxMDU_5fe79850-b32b-4e84-a211-a37aeb475bcb"
      unitRef="usd">50140000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90YWJsZTo5MTJhNzJhMzgyMWY0ZmM0YTg4MTMwYmRmM2ZjZjExYy90YWJsZXJhbmdlOjkxMmE3MmEzODIxZjRmYzRhODgxMzBiZGYzZmNmMTFjXzgtMy0xLTEtMjgxMDU_679ed4d4-1298-469d-bd6c-472b06d4f2d1"
      unitRef="usd">30044000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:DepreciationDepletionAndAmortization
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90ZXh0cmVnaW9uOjkwOTc5ODRlNzg0NTQzZjdiMzUwYjBlMTYxYTE5YWUwXzI3NDg3NzkwNzExNDA_3469ce0b-8e67-4c76-a3d2-c4f1802eda65"
      unitRef="usd">15700000</us-gaap:DepreciationDepletionAndAmortization>
    <us-gaap:DepreciationDepletionAndAmortization
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90ZXh0cmVnaW9uOjkwOTc5ODRlNzg0NTQzZjdiMzUwYjBlMTYxYTE5YWUwXzczNg_a6dff224-672e-4aa0-8041-4dde7de0c846"
      unitRef="usd">9800000</us-gaap:DepreciationDepletionAndAmortization>
    <us-gaap:DepreciationDepletionAndAmortization
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90ZXh0cmVnaW9uOjkwOTc5ODRlNzg0NTQzZjdiMzUwYjBlMTYxYTE5YWUwXzc0MA_c3a3f0db-682e-47f6-b3a5-a11ecef50251"
      unitRef="usd">6900000</us-gaap:DepreciationDepletionAndAmortization>
    <us-gaap:CapitalizedComputerSoftwareAdditions
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90ZXh0cmVnaW9uOjkwOTc5ODRlNzg0NTQzZjdiMzUwYjBlMTYxYTE5YWUwXzI3NDg3NzkwNzExNTY_a61a22f3-6ae8-46f2-a013-b74b9d1a9d90"
      unitRef="usd">10300000</us-gaap:CapitalizedComputerSoftwareAdditions>
    <us-gaap:CapitalizedComputerSoftwareAdditions
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90ZXh0cmVnaW9uOjkwOTc5ODRlNzg0NTQzZjdiMzUwYjBlMTYxYTE5YWUwXzgyMw_7832fe2a-fc3e-4e31-9ebc-bf13f78fff8f"
      unitRef="usd">7300000</us-gaap:CapitalizedComputerSoftwareAdditions>
    <us-gaap:CapitalizedComputerSoftwareAdditions
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90ZXh0cmVnaW9uOjkwOTc5ODRlNzg0NTQzZjdiMzUwYjBlMTYxYTE5YWUwXzgyNw_bdd96449-0599-40b2-9e17-e5b7513deccb"
      unitRef="usd">6000000</us-gaap:CapitalizedComputerSoftwareAdditions>
    <us-gaap:AdjustmentForAmortization
      contextRef="i45a1cb1173ef4cbb909ff75583569e2f_D20210101-20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90ZXh0cmVnaW9uOjkwOTc5ODRlNzg0NTQzZjdiMzUwYjBlMTYxYTE5YWUwXzI3NDg3NzkwNzExNzY_e433ff05-237e-45d6-aaa1-239f94a601f4"
      unitRef="usd">7400000</us-gaap:AdjustmentForAmortization>
    <us-gaap:AdjustmentForAmortization
      contextRef="ia708ef2a2b644fbe96669566ca411fb8_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90ZXh0cmVnaW9uOjkwOTc5ODRlNzg0NTQzZjdiMzUwYjBlMTYxYTE5YWUwXzk2OQ_33091a41-7022-4973-8af2-403c481a28ac"
      unitRef="usd">5900000</us-gaap:AdjustmentForAmortization>
    <us-gaap:AdjustmentForAmortization
      contextRef="i260d900ac9094189af2917563b480e23_D20190101-20191231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90ZXh0cmVnaW9uOjkwOTc5ODRlNzg0NTQzZjdiMzUwYjBlMTYxYTE5YWUwXzk3Mw_90719632-56f8-453e-8751-e694815baa91"
      unitRef="usd">5400000</us-gaap:AdjustmentForAmortization>
    <us-gaap:CapitalizedComputerSoftwareImpairments1
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90ZXh0cmVnaW9uOjkwOTc5ODRlNzg0NTQzZjdiMzUwYjBlMTYxYTE5YWUwXzEwOTk1MTE2Mjk1Mzc_26dfa789-3ee7-403e-8496-41a0de48514a"
      unitRef="usd">0</us-gaap:CapitalizedComputerSoftwareImpairments1>
    <us-gaap:CapitalizedComputerSoftwareImpairments1
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90ZXh0cmVnaW9uOjkwOTc5ODRlNzg0NTQzZjdiMzUwYjBlMTYxYTE5YWUwXzEwOTk1MTE2Mjk1Mzc_be71478c-076c-4009-b89c-5e83e29489b5"
      unitRef="usd">0</us-gaap:CapitalizedComputerSoftwareImpairments1>
    <us-gaap:CapitalizedComputerSoftwareImpairments1
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90ZXh0cmVnaW9uOjkwOTc5ODRlNzg0NTQzZjdiMzUwYjBlMTYxYTE5YWUwXzE0MTA_f0f792ce-aa9a-4301-b910-7c349abb2fbe"
      unitRef="usd">700000</us-gaap:CapitalizedComputerSoftwareImpairments1>
    <us-gaap:ScheduleOfAccountsPayableAndAccruedLiabilitiesTableTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90ZXh0cmVnaW9uOjkwOTc5ODRlNzg0NTQzZjdiMzUwYjBlMTYxYTE5YWUwXzE2OTE_3881e540-a87a-4c88-83a3-f194ff2573cc">&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Accounts payable consists of the following (in thousands):&lt;/span&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:70.374%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.842%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.843%"/&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:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 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="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Payable to publishers&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;235,440&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;168,673&#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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Trade payables&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;8,881&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;8,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 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Total accounts payable&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;244,321&#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;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;176,731&#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;</us-gaap:ScheduleOfAccountsPayableAndAccruedLiabilitiesTableTextBlock>
    <us-gaap:AccountsPayableOtherCurrent
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90YWJsZTpmY2M1ODUyMGEwOGI0ZjRlYWFlOWVkZWMxNTAwM2NlNS90YWJsZXJhbmdlOmZjYzU4NTIwYTA4YjRmNGVhYWU5ZWRlYzE1MDAzY2U1XzItMS0xLTEtMjgxMDU_465ad297-4af9-4997-b2c3-052dfea02cd9"
      unitRef="usd">235440000</us-gaap:AccountsPayableOtherCurrent>
    <us-gaap:AccountsPayableOtherCurrent
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90YWJsZTpmY2M1ODUyMGEwOGI0ZjRlYWFlOWVkZWMxNTAwM2NlNS90YWJsZXJhbmdlOmZjYzU4NTIwYTA4YjRmNGVhYWU5ZWRlYzE1MDAzY2U1XzItMy0xLTEtMjgxMDU_b96e6ec7-2806-4ab0-8712-82b2dcf77ecd"
      unitRef="usd">168673000</us-gaap:AccountsPayableOtherCurrent>
    <us-gaap:AccountsPayableTradeCurrent
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90YWJsZTpmY2M1ODUyMGEwOGI0ZjRlYWFlOWVkZWMxNTAwM2NlNS90YWJsZXJhbmdlOmZjYzU4NTIwYTA4YjRmNGVhYWU5ZWRlYzE1MDAzY2U1XzMtMS0xLTEtMjgxMDU_07a93d28-c38c-40da-9ac9-b0c77a640c43"
      unitRef="usd">8881000</us-gaap:AccountsPayableTradeCurrent>
    <us-gaap:AccountsPayableTradeCurrent
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90YWJsZTpmY2M1ODUyMGEwOGI0ZjRlYWFlOWVkZWMxNTAwM2NlNS90YWJsZXJhbmdlOmZjYzU4NTIwYTA4YjRmNGVhYWU5ZWRlYzE1MDAzY2U1XzMtMy0xLTEtMjgxMDU_093d7c00-a11e-4342-8907-23aecb45e8e3"
      unitRef="usd">8058000</us-gaap:AccountsPayableTradeCurrent>
    <us-gaap:AccountsPayableCurrent
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90YWJsZTpmY2M1ODUyMGEwOGI0ZjRlYWFlOWVkZWMxNTAwM2NlNS90YWJsZXJhbmdlOmZjYzU4NTIwYTA4YjRmNGVhYWU5ZWRlYzE1MDAzY2U1XzQtMS0xLTEtMjgxMDU_6974aa0e-b464-4785-9127-51dd5aca93f4"
      unitRef="usd">244321000</us-gaap:AccountsPayableCurrent>
    <us-gaap:AccountsPayableCurrent
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90YWJsZTpmY2M1ODUyMGEwOGI0ZjRlYWFlOWVkZWMxNTAwM2NlNS90YWJsZXJhbmdlOmZjYzU4NTIwYTA4YjRmNGVhYWU5ZWRlYzE1MDAzY2U1XzQtMy0xLTEtMjgxMDU_17fe2052-37f4-4fd1-a2e3-8097c3efed1b"
      unitRef="usd">176731000</us-gaap:AccountsPayableCurrent>
    <us-gaap:ScheduleOfAccruedLiabilitiesTableTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90ZXh0cmVnaW9uOjkwOTc5ODRlNzg0NTQzZjdiMzUwYjBlMTYxYTE5YWUwXzE2OTI_9237c569-70af-4b84-bbfd-add81c183684">&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Accrued expenses consist of the following (in thousands):&lt;/span&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:70.374%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.842%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.843%"/&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:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;December 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="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Accrued 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;17,271&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;13,352&#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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Accrued and other current liabilities&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;1,509&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;1,492&#160;&lt;/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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Total accrued expenses&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;18,780&#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;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;14,844&#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;</us-gaap:ScheduleOfAccruedLiabilitiesTableTextBlock>
    <us-gaap:EmployeeRelatedLiabilitiesCurrent
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90YWJsZTpmY2Q3YTExM2ZiNzU0OGU4YTE0ODAxYjUzNTkzN2RkYS90YWJsZXJhbmdlOmZjZDdhMTEzZmI3NTQ4ZThhMTQ4MDFiNTM1OTM3ZGRhXzItMS0xLTEtMjgxMDU_127cb982-62b5-419f-9485-7a282a7d383e"
      unitRef="usd">17271000</us-gaap:EmployeeRelatedLiabilitiesCurrent>
    <us-gaap:EmployeeRelatedLiabilitiesCurrent
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90YWJsZTpmY2Q3YTExM2ZiNzU0OGU4YTE0ODAxYjUzNTkzN2RkYS90YWJsZXJhbmdlOmZjZDdhMTEzZmI3NTQ4ZThhMTQ4MDFiNTM1OTM3ZGRhXzItMy0xLTEtMjgxMDU_a4854c2c-d783-4aa2-b871-e412aff44ed8"
      unitRef="usd">13352000</us-gaap:EmployeeRelatedLiabilitiesCurrent>
    <us-gaap:OtherAccruedLiabilitiesCurrent
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90YWJsZTpmY2Q3YTExM2ZiNzU0OGU4YTE0ODAxYjUzNTkzN2RkYS90YWJsZXJhbmdlOmZjZDdhMTEzZmI3NTQ4ZThhMTQ4MDFiNTM1OTM3ZGRhXzMtMS0xLTEtMjgxMDU_afcf1b9b-853f-4363-a05b-a51e41d92285"
      unitRef="usd">1509000</us-gaap:OtherAccruedLiabilitiesCurrent>
    <us-gaap:OtherAccruedLiabilitiesCurrent
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90YWJsZTpmY2Q3YTExM2ZiNzU0OGU4YTE0ODAxYjUzNTkzN2RkYS90YWJsZXJhbmdlOmZjZDdhMTEzZmI3NTQ4ZThhMTQ4MDFiNTM1OTM3ZGRhXzMtMy0xLTEtMjgxMDU_5d0fe27c-b4ae-4bd9-ab5d-82e5eec12ac4"
      unitRef="usd">1492000</us-gaap:OtherAccruedLiabilitiesCurrent>
    <us-gaap:AccruedLiabilitiesCurrent
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90YWJsZTpmY2Q3YTExM2ZiNzU0OGU4YTE0ODAxYjUzNTkzN2RkYS90YWJsZXJhbmdlOmZjZDdhMTEzZmI3NTQ4ZThhMTQ4MDFiNTM1OTM3ZGRhXzQtMS0xLTEtMjgxMDU_4ed78a4f-0442-4e1a-ba00-1402f5d9b025"
      unitRef="usd">18780000</us-gaap:AccruedLiabilitiesCurrent>
    <us-gaap:AccruedLiabilitiesCurrent
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMDkvZnJhZzo5MDk3OTg0ZTc4NDU0M2Y3YjM1MGIwZTE2MWExOWFlMC90YWJsZTpmY2Q3YTExM2ZiNzU0OGU4YTE0ODAxYjUzNTkzN2RkYS90YWJsZXJhbmdlOmZjZDdhMTEzZmI3NTQ4ZThhMTQ4MDFiNTM1OTM3ZGRhXzQtMy0xLTEtMjgxMDU_f8c0aa3e-bf7d-4c02-8950-f1e1246a9365"
      unitRef="usd">14844000</us-gaap:AccruedLiabilitiesCurrent>
    <us-gaap:DebtDisclosureTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMTIvZnJhZzozNjE3OTQ1Y2VmMTM0NzU3OGY3MmM3ZDc3MjRkY2RkYi90ZXh0cmVnaW9uOjM2MTc5NDVjZWYxMzQ3NTc4ZjcyYzdkNzcyNGRjZGRiXzE4ODM_521ccbd0-8c42-4de1-a09b-56ad0a69e7d6">Loan and Security Agreement&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In June 2021, the Company amended and restated its loan and security agreement (the "Loan Agreement")  with Silicon Valley Bank ("SVB".) The Loan Agreement provides a senior secured revolving credit facility of up to $25.0 million or 80% of eligible accounts receivable less certain reserves, minus the aggregate principal amount of all outstanding advances. Interest accrues on advances under the revolving line of credit at a variable rate equal to the greater of prime rate or 3.25%. As of December&#160;31, 2021, the applicable interest rate under the revolving line of credit was 3.25%. An unused revolver fee in the amount of 0.40% per annum of the average unused portion of the revolver line is charged and is payable quarterly in arrears in any quarter where the average closing outstanding balance is less than $5.0 million. The maturity date of the revolving line of credit is June&#160;6, 2024. As of December&#160;31, 2021 there were no outstanding advances under the revolving line of credit. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.5pt;text-indent:18pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company&#x2019;s obligations under the line of credit and the letters of credit (described in Note 6) with SVB are secured by substantially all of its assets excluding its intellectual property. The Loan Agreement contains affirmative covenants including financial covenants that, among other things, require the Company to maintain an adjusted quick ratio of no less than 1.00 to 1.00. The adjusted quick ratio is defined as the ratio of unrestricted cash and cash equivalents at SVB, plus billed accounts receivable to total accounts payable plus all SVB loans outstanding and outstanding letters of credit. The Loan Agreement also restricts the Company from paying dividends to stockholders without prior consent from SVB. The Company was in compliance with the financial covenants as of December&#160;31, 2021.&lt;/span&gt;&lt;/div&gt;</us-gaap:DebtDisclosureTextBlock>
    <us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity
      contextRef="if1fe45bf7b28427a971bb786209b01f2_I20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMTIvZnJhZzozNjE3OTQ1Y2VmMTM0NzU3OGY3MmM3ZDc3MjRkY2RkYi90ZXh0cmVnaW9uOjM2MTc5NDVjZWYxMzQ3NTc4ZjcyYzdkNzcyNGRjZGRiXzI3NDg3NzkwNzMwNTQ_b9eeec69-6a8a-4c7a-afb0-bdd57a9f974d"
      unitRef="usd">25000000</us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity>
    <pubm:LineOfCreditFacilityBorrowingCapacityPercentageOfEligibleAccountsReceivableNet
      contextRef="if1fe45bf7b28427a971bb786209b01f2_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMTIvZnJhZzozNjE3OTQ1Y2VmMTM0NzU3OGY3MmM3ZDc3MjRkY2RkYi90ZXh0cmVnaW9uOjM2MTc5NDVjZWYxMzQ3NTc4ZjcyYzdkNzcyNGRjZGRiXzI3NDg3NzkwNzMwNTk_b93a4869-0294-4dba-b4dc-a85e41c186c2"
      unitRef="number">800000</pubm:LineOfCreditFacilityBorrowingCapacityPercentageOfEligibleAccountsReceivableNet>
    <us-gaap:DebtInstrumentInterestRateStatedPercentage
      contextRef="if1fe45bf7b28427a971bb786209b01f2_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMTIvZnJhZzozNjE3OTQ1Y2VmMTM0NzU3OGY3MmM3ZDc3MjRkY2RkYi90ZXh0cmVnaW9uOjM2MTc5NDVjZWYxMzQ3NTc4ZjcyYzdkNzcyNGRjZGRiXzEwOTk1MTE2MzQ2OTM_ce8b9050-28fb-4a5a-880b-d30b9bb827dd"
      unitRef="number">0.0325</us-gaap:DebtInstrumentInterestRateStatedPercentage>
    <us-gaap:DebtInstrumentInterestRateStatedPercentage
      contextRef="if1fe45bf7b28427a971bb786209b01f2_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMTIvZnJhZzozNjE3OTQ1Y2VmMTM0NzU3OGY3MmM3ZDc3MjRkY2RkYi90ZXh0cmVnaW9uOjM2MTc5NDVjZWYxMzQ3NTc4ZjcyYzdkNzcyNGRjZGRiXzEwOTk1MTE2MzQ3MDA_db9c58be-b583-48b4-a377-785e159a21eb"
      unitRef="number">0.0325</us-gaap:DebtInstrumentInterestRateStatedPercentage>
    <us-gaap:LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage
      contextRef="i633c9da7b7dd4bf0b636ba82cabe4f5d_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMTIvZnJhZzozNjE3OTQ1Y2VmMTM0NzU3OGY3MmM3ZDc3MjRkY2RkYi90ZXh0cmVnaW9uOjM2MTc5NDVjZWYxMzQ3NTc4ZjcyYzdkNzcyNGRjZGRiXzEwOTk1MTE2MzQ3MTM_0f08104d-da49-4941-a54d-67b5cad762e7"
      unitRef="number">0.0040</us-gaap:LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage>
    <pubm:LineOfCreditFacilityBorrowingCapacityUnusedCapacityFeeClosingBalanceThreshold
      contextRef="if1fe45bf7b28427a971bb786209b01f2_I20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMTIvZnJhZzozNjE3OTQ1Y2VmMTM0NzU3OGY3MmM3ZDc3MjRkY2RkYi90ZXh0cmVnaW9uOjM2MTc5NDVjZWYxMzQ3NTc4ZjcyYzdkNzcyNGRjZGRiXzI3NDg3NzkwNzMwODE_d192a407-378b-454d-a785-d891a9d070b1"
      unitRef="usd">5000000</pubm:LineOfCreditFacilityBorrowingCapacityUnusedCapacityFeeClosingBalanceThreshold>
    <pubm:DebtInstrumentCovenantQuickRatioMinimum
      contextRef="i3ad4d0188ce94bf89bd5d5a0d33ece92_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMTIvZnJhZzozNjE3OTQ1Y2VmMTM0NzU3OGY3MmM3ZDc3MjRkY2RkYi90ZXh0cmVnaW9uOjM2MTc5NDVjZWYxMzQ3NTc4ZjcyYzdkNzcyNGRjZGRiXzI3NDg3NzkwNzMwOTY_cfccccaf-6df6-4df8-bfa5-b96cc271c627"
      unitRef="number">1.00</pubm:DebtInstrumentCovenantQuickRatioMinimum>
    <pubm:DebtInstrumentCovenantQuickRatioMinimum
      contextRef="i3ad4d0188ce94bf89bd5d5a0d33ece92_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMTIvZnJhZzozNjE3OTQ1Y2VmMTM0NzU3OGY3MmM3ZDc3MjRkY2RkYi90ZXh0cmVnaW9uOjM2MTc5NDVjZWYxMzQ3NTc4ZjcyYzdkNzcyNGRjZGRiXzI3NDg3NzkwNzMxMDA_cfccccaf-6df6-4df8-bfa5-b96cc271c627"
      unitRef="number">1.00</pubm:DebtInstrumentCovenantQuickRatioMinimum>
    <us-gaap:LesseeOperatingLeasesTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90ZXh0cmVnaW9uOjQ3OGU1ZTNhNjY4ZTQ1NWJiMTJkZWIxMTUyYmVhMjQyXzEwOTk1MTE2MzQ2OTY_15279243-c665-4e4c-a247-bb3dc44cb693">Leases&lt;div&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company determines if an arrangement is or contains a lease at inception, which is the date on which the terms of the contract are agreed to, and the agreement creates enforceable rights and obligations. Under Topic 842, a contract is or contains a lease when (i) explicitly or implicitly identified assets have been deployed in the contract and (ii) the customer obtains substantially all of the economic benefits from the use of that underlying asset and directs how and for what purpose the asset is used during the term of the contract. The Company also considers whether its service arrangements include the right to control the use of an asset. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company leases office facilities from unrelated parties under operating lease agreements that have initial terms ranging from 2 to 10 years. Included in an office lease the Company also leases furniture and fixtures under a finance lease with a seven year term finance lease with a purchase option at the end of the term. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The allocation of lease payments was determined based on the relative standalone price of the separate office and furniture components. Some leases include one or more options to renew, generally at our sole discretion, with renewal terms that can extend the lease term up to 10 additional years. In addition, certain leases contain termination options, where the rights to terminate are held by either the Company, the lessor, or both parties. These options to extend or terminate a lease are not included in the lease terms as the Company is not reasonably certain that they will exercise that option. The Company&#x2019;s leases generally do not contain any material restrictive covenants.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Operating lease cost is recognized on a straight-line basis over the lease term.  Finance lease cost is recognized as a combination of the amortization expense for the ROU assets and interest expense for the outstanding lease liabilities, and results in a front-loaded expense pattern over the lease term. The components of lease expense are as follows:&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:84.957%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.843%"/&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:left;vertical-align:bottom"&gt;&lt;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2021&lt;/span&gt;&lt;/div&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Operating lease cost&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2,104&#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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Finance lease cost - amortization of right-of-use 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;14&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Finance lease cost - interest on lease liabilities&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:120%"&gt;2&#160;&lt;/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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Total lease cost&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 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2,120&#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="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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Rent expense was approximately $2.5 million, $2.5&#160;million, and $2.6 million for the year ended December 31, 2021, 2020, and 2019, respectively. Rent expense was offset by sublease income of $0.4 million and $0.6 million for the years ended December 31, 2020 and 2019, respectively. No sublease income was recognized for the year ended December 31, 2021. Short-term and variable lease expenses are not material to the Company&#x2019;s consolidated financial statements.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Supplemental cash flow information related to leases is as follows:&lt;/span&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:84.957%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.843%"/&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:left;vertical-align:bottom"&gt;&lt;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2021&lt;/span&gt;&lt;/div&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Cash paid for amounts included in measurement of lease liabilities:&lt;/span&gt;&lt;/td&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 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Operating cash outflows - payments on operating leases&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2,283&#160;&lt;/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 style="height:15pt"&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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Right-of-use assets obtained in exchange for new lease obligations:&lt;/span&gt;&lt;/td&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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Operating leases&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;20,887&#160;&lt;/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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Finance leases&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;869&#160;&lt;/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&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Supplemental balance sheet information related to leases is as follows:&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:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:84.957%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.843%"/&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:left;vertical-align:bottom"&gt;&lt;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2021&lt;/span&gt;&lt;/div&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%"&gt;Operating leases&lt;/span&gt;&lt;/td&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 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Operating lease right-of-use assets&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;21,613&#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 style="height:14pt"&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt 0 13pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:3pt double #000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Operating lease liabilities, current&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;3,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;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Operating lease liabilities, non-current&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:120%"&gt;17,842&#160;&lt;/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 23.5pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Total operating lease liabilities&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;21,706&#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 style="height:15pt"&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 #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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%"&gt;Finance leases&lt;/span&gt;&lt;/td&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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Furniture and fixtures&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;869&#160;&lt;/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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Accumulated depreciation&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;(14)&lt;/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 23.5pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTplZDExYTJmN2FlZWQ0NTU1ODJmNzUyZmFhYmNjYjc3ZC90YWJsZXJhbmdlOmVkMTFhMmY3YWVlZDQ1NTU4MmY3NTJmYWFiY2NiNzdkXzExLTAtMS0xLTM2ODIw_a28e4118-b508-44e8-98fe-f9980d536268"&gt;&lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTplZDExYTJmN2FlZWQ0NTU1ODJmNzUyZmFhYmNjYjc3ZC90YWJsZXJhbmdlOmVkMTFhMmY3YWVlZDQ1NTU4MmY3NTJmYWFiY2NiNzdkXzExLTAtMS0xLTM2ODIw_f8d94a1f-84c6-4e59-94df-0ff8d68ad1ca"&gt;Furniture and fixtures, net&lt;/span&gt;&lt;/span&gt;&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;855&#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 style="height:14pt"&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt 0 13pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:3pt double #000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Accrued liabilities&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;119&#160;&lt;/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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Other liabilities, non-current&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;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;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 23.5pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTplZDExYTJmN2FlZWQ0NTU1ODJmNzUyZmFhYmNjYjc3ZC90YWJsZXJhbmdlOmVkMTFhMmY3YWVlZDQ1NTU4MmY3NTJmYWFiY2NiNzdkXzE1LTAtMS0xLTM2ODM2_22026826-4dd6-4ff6-9f7e-550a7a08b1ad"&gt;&lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTplZDExYTJmN2FlZWQ0NTU1ODJmNzUyZmFhYmNjYjc3ZC90YWJsZXJhbmdlOmVkMTFhMmY3YWVlZDQ1NTU4MmY3NTJmYWFiY2NiNzdkXzE1LTAtMS0xLTM2ODM2_c0ef8b58-57da-408c-809e-ac790c4d5af4"&gt;Total finance lease liabilities&lt;/span&gt;&lt;/span&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 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;860&#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;&lt;div&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:84.957%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.843%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr style="height:33pt"&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%"&gt;Weighted-average remaining lease term:&lt;/span&gt;&lt;/td&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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Operating leases&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;div style="text-align:right"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;6 years&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Finance leases&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;div style="text-align:right"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;6.3 years&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height:14pt"&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt 0 13pt"/&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;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%"&gt;Weighted-average discount rate:&lt;/span&gt;&lt;/td&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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Operating leases&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2.20&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Finance leases&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:120%"&gt;2.24&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;As of December 31, 2021, the maturities of lease liabilities under operating and finance leases were as follows:&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 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:47.137%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.726%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.726%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.729%"/&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:10pt;font-weight:400;line-height:120%"&gt;Year ending December 31,&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Operating leases&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Finance leases&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2022&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;4,298&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;136&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;4,434&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2023&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:120%"&gt;3,470&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;140&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;3,610&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2024&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;3,459&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;145&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;3,604&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2025&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:120%"&gt;3,563&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;149&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;3,712&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2026&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;3,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;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;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:120%"&gt;153&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;3,823&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Thereafter&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:120%"&gt;4,750&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;200&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;4,950&#160;&lt;/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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Total minimum lease payments&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;23,210&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;923&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;24,133&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Less: imputed interest&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:3pt double #000;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:120%"&gt;(1,504)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:3pt double #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:3pt double #000;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:120%"&gt;(63)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:3pt double #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:3pt double #000;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:120%"&gt;(1,567)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:3pt double #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 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Total present value of lease liabilities&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 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;21,706&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;860&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;22,566&#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&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;A summary of the future minimum lease commitments, as determined under Topic 840, for all non-cancelable operating lease agreements were as follows as of December 31, 2020:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br/&gt;&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:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:84.957%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.843%"/&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:10pt;font-weight:400;line-height:120%"&gt;2021&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2,179&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2022&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;1,031&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2023&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:120%"&gt;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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#160;&#160;&#160;Total minimum lease commitments&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 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;3,318&#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;</us-gaap:LesseeOperatingLeasesTextBlock>
    <us-gaap:LesseeFinanceLeasesTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90ZXh0cmVnaW9uOjQ3OGU1ZTNhNjY4ZTQ1NWJiMTJkZWIxMTUyYmVhMjQyXzEwOTk1MTE2MzQ2OTc_1df58e14-a6b2-4b14-9ffa-b86db8d9f8f4">Leases&lt;div&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company determines if an arrangement is or contains a lease at inception, which is the date on which the terms of the contract are agreed to, and the agreement creates enforceable rights and obligations. Under Topic 842, a contract is or contains a lease when (i) explicitly or implicitly identified assets have been deployed in the contract and (ii) the customer obtains substantially all of the economic benefits from the use of that underlying asset and directs how and for what purpose the asset is used during the term of the contract. The Company also considers whether its service arrangements include the right to control the use of an asset. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company leases office facilities from unrelated parties under operating lease agreements that have initial terms ranging from 2 to 10 years. Included in an office lease the Company also leases furniture and fixtures under a finance lease with a seven year term finance lease with a purchase option at the end of the term. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The allocation of lease payments was determined based on the relative standalone price of the separate office and furniture components. Some leases include one or more options to renew, generally at our sole discretion, with renewal terms that can extend the lease term up to 10 additional years. In addition, certain leases contain termination options, where the rights to terminate are held by either the Company, the lessor, or both parties. These options to extend or terminate a lease are not included in the lease terms as the Company is not reasonably certain that they will exercise that option. The Company&#x2019;s leases generally do not contain any material restrictive covenants.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Operating lease cost is recognized on a straight-line basis over the lease term.  Finance lease cost is recognized as a combination of the amortization expense for the ROU assets and interest expense for the outstanding lease liabilities, and results in a front-loaded expense pattern over the lease term. The components of lease expense are as follows:&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:84.957%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.843%"/&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:left;vertical-align:bottom"&gt;&lt;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2021&lt;/span&gt;&lt;/div&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Operating lease cost&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2,104&#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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Finance lease cost - amortization of right-of-use 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;14&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Finance lease cost - interest on lease liabilities&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:120%"&gt;2&#160;&lt;/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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Total lease cost&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 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2,120&#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="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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Rent expense was approximately $2.5 million, $2.5&#160;million, and $2.6 million for the year ended December 31, 2021, 2020, and 2019, respectively. Rent expense was offset by sublease income of $0.4 million and $0.6 million for the years ended December 31, 2020 and 2019, respectively. No sublease income was recognized for the year ended December 31, 2021. Short-term and variable lease expenses are not material to the Company&#x2019;s consolidated financial statements.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Supplemental cash flow information related to leases is as follows:&lt;/span&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:84.957%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.843%"/&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:left;vertical-align:bottom"&gt;&lt;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2021&lt;/span&gt;&lt;/div&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Cash paid for amounts included in measurement of lease liabilities:&lt;/span&gt;&lt;/td&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 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Operating cash outflows - payments on operating leases&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2,283&#160;&lt;/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 style="height:15pt"&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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Right-of-use assets obtained in exchange for new lease obligations:&lt;/span&gt;&lt;/td&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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Operating leases&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;20,887&#160;&lt;/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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Finance leases&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;869&#160;&lt;/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&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Supplemental balance sheet information related to leases is as follows:&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:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:84.957%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.843%"/&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:left;vertical-align:bottom"&gt;&lt;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2021&lt;/span&gt;&lt;/div&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%"&gt;Operating leases&lt;/span&gt;&lt;/td&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 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Operating lease right-of-use assets&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;21,613&#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 style="height:14pt"&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt 0 13pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:3pt double #000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Operating lease liabilities, current&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;3,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;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Operating lease liabilities, non-current&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:120%"&gt;17,842&#160;&lt;/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 23.5pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Total operating lease liabilities&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;21,706&#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 style="height:15pt"&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 #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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%"&gt;Finance leases&lt;/span&gt;&lt;/td&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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Furniture and fixtures&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;869&#160;&lt;/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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Accumulated depreciation&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;(14)&lt;/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 23.5pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTplZDExYTJmN2FlZWQ0NTU1ODJmNzUyZmFhYmNjYjc3ZC90YWJsZXJhbmdlOmVkMTFhMmY3YWVlZDQ1NTU4MmY3NTJmYWFiY2NiNzdkXzExLTAtMS0xLTM2ODIw_a28e4118-b508-44e8-98fe-f9980d536268"&gt;&lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTplZDExYTJmN2FlZWQ0NTU1ODJmNzUyZmFhYmNjYjc3ZC90YWJsZXJhbmdlOmVkMTFhMmY3YWVlZDQ1NTU4MmY3NTJmYWFiY2NiNzdkXzExLTAtMS0xLTM2ODIw_f8d94a1f-84c6-4e59-94df-0ff8d68ad1ca"&gt;Furniture and fixtures, net&lt;/span&gt;&lt;/span&gt;&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;855&#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 style="height:14pt"&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt 0 13pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:3pt double #000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Accrued liabilities&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;119&#160;&lt;/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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Other liabilities, non-current&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;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;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 23.5pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTplZDExYTJmN2FlZWQ0NTU1ODJmNzUyZmFhYmNjYjc3ZC90YWJsZXJhbmdlOmVkMTFhMmY3YWVlZDQ1NTU4MmY3NTJmYWFiY2NiNzdkXzE1LTAtMS0xLTM2ODM2_22026826-4dd6-4ff6-9f7e-550a7a08b1ad"&gt;&lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTplZDExYTJmN2FlZWQ0NTU1ODJmNzUyZmFhYmNjYjc3ZC90YWJsZXJhbmdlOmVkMTFhMmY3YWVlZDQ1NTU4MmY3NTJmYWFiY2NiNzdkXzE1LTAtMS0xLTM2ODM2_c0ef8b58-57da-408c-809e-ac790c4d5af4"&gt;Total finance lease liabilities&lt;/span&gt;&lt;/span&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 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;860&#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;&lt;div&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:84.957%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.843%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr style="height:33pt"&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%"&gt;Weighted-average remaining lease term:&lt;/span&gt;&lt;/td&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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Operating leases&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;div style="text-align:right"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;6 years&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Finance leases&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;div style="text-align:right"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;6.3 years&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height:14pt"&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt 0 13pt"/&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;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%"&gt;Weighted-average discount rate:&lt;/span&gt;&lt;/td&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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Operating leases&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2.20&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Finance leases&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:120%"&gt;2.24&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;As of December 31, 2021, the maturities of lease liabilities under operating and finance leases were as follows:&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 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:47.137%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.726%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.726%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.729%"/&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:10pt;font-weight:400;line-height:120%"&gt;Year ending December 31,&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Operating leases&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Finance leases&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2022&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;4,298&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;136&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;4,434&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2023&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:120%"&gt;3,470&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;140&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;3,610&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2024&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;3,459&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;145&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;3,604&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2025&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:120%"&gt;3,563&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;149&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;3,712&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2026&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;3,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;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;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:120%"&gt;153&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;3,823&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Thereafter&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:120%"&gt;4,750&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;200&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;4,950&#160;&lt;/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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Total minimum lease payments&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;23,210&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;923&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;24,133&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Less: imputed interest&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:3pt double #000;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:120%"&gt;(1,504)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:3pt double #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:3pt double #000;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:120%"&gt;(63)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:3pt double #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:3pt double #000;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:120%"&gt;(1,567)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:3pt double #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 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Total present value of lease liabilities&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 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;21,706&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;860&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;22,566&#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&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;A summary of the future minimum lease commitments, as determined under Topic 840, for all non-cancelable operating lease agreements were as follows as of December 31, 2020:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br/&gt;&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:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:84.957%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.843%"/&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:10pt;font-weight:400;line-height:120%"&gt;2021&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2,179&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2022&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;1,031&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2023&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:120%"&gt;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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#160;&#160;&#160;Total minimum lease commitments&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 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;3,318&#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;</us-gaap:LesseeFinanceLeasesTextBlock>
    <us-gaap:LesseeOperatingLeaseTermOfContract
      contextRef="i3ff0590ef9ef4a3b91c6b2abfd262564_I20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90ZXh0cmVnaW9uOjQ3OGU1ZTNhNjY4ZTQ1NWJiMTJkZWIxMTUyYmVhMjQyXzEwOTk1MTE2MzQ3MDA_7b85d168-2652-46cf-858e-5dffa6e8dab7">P2Y</us-gaap:LesseeOperatingLeaseTermOfContract>
    <us-gaap:LesseeOperatingLeaseTermOfContract
      contextRef="ib468b00cf8b24a40a7421d89b33ebd2d_I20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90ZXh0cmVnaW9uOjQ3OGU1ZTNhNjY4ZTQ1NWJiMTJkZWIxMTUyYmVhMjQyXzEwOTk1MTE2MzQ3MDg_6b4cee1e-565a-4450-ad4d-d25cd65e4cbd">P10Y</us-gaap:LesseeOperatingLeaseTermOfContract>
    <us-gaap:LesseeOperatingLeaseTermOfContract
      contextRef="idc26181cf8f041a78b18b2a539b585e8_I20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90ZXh0cmVnaW9uOjQ3OGU1ZTNhNjY4ZTQ1NWJiMTJkZWIxMTUyYmVhMjQyXzEwOTk1MTE2MzQ3Mjg_ba9c585a-230c-420e-a8c6-10b57b20afbf">P7Y</us-gaap:LesseeOperatingLeaseTermOfContract>
    <pubm:LesseeOperatingLeaseTermOfContractExtensionPeriod
      contextRef="idc26181cf8f041a78b18b2a539b585e8_I20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90ZXh0cmVnaW9uOjQ3OGU1ZTNhNjY4ZTQ1NWJiMTJkZWIxMTUyYmVhMjQyXzEwOTk1MTE2MzQ3MzA_28369440-5eea-48a0-b14c-864106f1ccab">P10Y</pubm:LesseeOperatingLeaseTermOfContractExtensionPeriod>
    <us-gaap:LeaseCostTableTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90ZXh0cmVnaW9uOjQ3OGU1ZTNhNjY4ZTQ1NWJiMTJkZWIxMTUyYmVhMjQyXzEwOTk1MTE2MzQ3Mzc_7b9ca95c-310d-4ac8-a56a-8d0e3b758ff1">The components of lease expense are as follows:&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:84.957%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.843%"/&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:left;vertical-align:bottom"&gt;&lt;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2021&lt;/span&gt;&lt;/div&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Operating lease cost&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2,104&#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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Finance lease cost - amortization of right-of-use 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;14&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Finance lease cost - interest on lease liabilities&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:120%"&gt;2&#160;&lt;/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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Total lease cost&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 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2,120&#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;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Supplemental cash flow information related to leases is as follows:&lt;/span&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:84.957%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.843%"/&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:left;vertical-align:bottom"&gt;&lt;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2021&lt;/span&gt;&lt;/div&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Cash paid for amounts included in measurement of lease liabilities:&lt;/span&gt;&lt;/td&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 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Operating cash outflows - payments on operating leases&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2,283&#160;&lt;/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 style="height:15pt"&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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Right-of-use assets obtained in exchange for new lease obligations:&lt;/span&gt;&lt;/td&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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Operating leases&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;20,887&#160;&lt;/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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Finance leases&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;869&#160;&lt;/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;</us-gaap:LeaseCostTableTextBlock>
    <us-gaap:OperatingLeaseCost
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTpiNWE4NTc2NjMwMmI0NDI1YWRlZDVkMTI5NWJlOGM5YS90YWJsZXJhbmdlOmI1YTg1NzY2MzAyYjQ0MjVhZGVkNWQxMjk1YmU4YzlhXzEtMS0xLTEtMzg2OTg_519ff626-e528-47cd-acf1-3437fdc2eb4c"
      unitRef="usd">2104000</us-gaap:OperatingLeaseCost>
    <us-gaap:FinanceLeaseRightOfUseAssetAmortization
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTpiNWE4NTc2NjMwMmI0NDI1YWRlZDVkMTI5NWJlOGM5YS90YWJsZXJhbmdlOmI1YTg1NzY2MzAyYjQ0MjVhZGVkNWQxMjk1YmU4YzlhXzItMS0xLTEtMzg3MDE_8342318e-65de-4ef1-a32b-7c3fff65fb4c"
      unitRef="usd">14000</us-gaap:FinanceLeaseRightOfUseAssetAmortization>
    <us-gaap:FinanceLeaseInterestExpense
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTpiNWE4NTc2NjMwMmI0NDI1YWRlZDVkMTI5NWJlOGM5YS90YWJsZXJhbmdlOmI1YTg1NzY2MzAyYjQ0MjVhZGVkNWQxMjk1YmU4YzlhXzMtMS0xLTEtMzg3MDM_276be255-adb3-4297-a239-183bad65eda2"
      unitRef="usd">2000</us-gaap:FinanceLeaseInterestExpense>
    <us-gaap:LeaseCost
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTpiNWE4NTc2NjMwMmI0NDI1YWRlZDVkMTI5NWJlOGM5YS90YWJsZXJhbmdlOmI1YTg1NzY2MzAyYjQ0MjVhZGVkNWQxMjk1YmU4YzlhXzUtMS0xLTEtMzg3MDc_bdea4fc5-98a7-4f61-be51-a1f7b2540f59"
      unitRef="usd">2120000</us-gaap:LeaseCost>
    <us-gaap:OperatingLeaseExpense
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90ZXh0cmVnaW9uOjQ3OGU1ZTNhNjY4ZTQ1NWJiMTJkZWIxMTUyYmVhMjQyXzkzNDU4NDg4NDQzMTg_736bc23b-45ba-46c2-9847-91289e05ba40"
      unitRef="usd">2500000</us-gaap:OperatingLeaseExpense>
    <us-gaap:OperatingLeaseExpense
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90ZXh0cmVnaW9uOjQ3OGU1ZTNhNjY4ZTQ1NWJiMTJkZWIxMTUyYmVhMjQyXzI3NDg3NzkwNzUxOTU_b6abd44e-5470-49f8-baa1-4c3b0b616d36"
      unitRef="usd">2500000</us-gaap:OperatingLeaseExpense>
    <us-gaap:OperatingLeaseExpense
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90ZXh0cmVnaW9uOjQ3OGU1ZTNhNjY4ZTQ1NWJiMTJkZWIxMTUyYmVhMjQyXzkzNDU4NDg4NDQzMzA_e4fe8d42-44e6-4bbc-85e7-716cc4949ded"
      unitRef="usd">2600000</us-gaap:OperatingLeaseExpense>
    <us-gaap:SubleaseIncome
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90ZXh0cmVnaW9uOjQ3OGU1ZTNhNjY4ZTQ1NWJiMTJkZWIxMTUyYmVhMjQyXzkzNDU4NDg4NDQ3Mzg_d8ef2276-e63e-4538-9311-c4ea3e9f49a1"
      unitRef="usd">400000</us-gaap:SubleaseIncome>
    <us-gaap:SubleaseIncome
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90ZXh0cmVnaW9uOjQ3OGU1ZTNhNjY4ZTQ1NWJiMTJkZWIxMTUyYmVhMjQyXzkzNDU4NDg4NDQ3NTA_4536df64-0c5c-4a5a-ba16-455b78dbc3fb"
      unitRef="usd">600000</us-gaap:SubleaseIncome>
    <us-gaap:OperatingLeasePayments
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTo5ODllM2ViNzQzNGU0YTU5OTFiYzU4ZjlmOTk3MTdlZC90YWJsZXJhbmdlOjk4OWUzZWI3NDM0ZTRhNTk5MWJjNThmOWY5OTcxN2VkXzItMS0xLTEtMzg3MTI_980080df-6bf7-45bc-8dca-7f76edc1e073"
      unitRef="usd">2283000</us-gaap:OperatingLeasePayments>
    <us-gaap:RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTo5ODllM2ViNzQzNGU0YTU5OTFiYzU4ZjlmOTk3MTdlZC90YWJsZXJhbmdlOjk4OWUzZWI3NDM0ZTRhNTk5MWJjNThmOWY5OTcxN2VkXzctMS0xLTEtMzg3MTU_2c1e3c5c-6aee-4b6d-91f9-8f6a10cc7a45"
      unitRef="usd">20887000</us-gaap:RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability>
    <us-gaap:RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTo5ODllM2ViNzQzNGU0YTU5OTFiYzU4ZjlmOTk3MTdlZC90YWJsZXJhbmdlOjk4OWUzZWI3NDM0ZTRhNTk5MWJjNThmOWY5OTcxN2VkXzgtMS0xLTEtMzg3MTc_238fd1ac-9dd1-43a1-ab91-318e646ea734"
      unitRef="usd">869000</us-gaap:RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability>
    <pubm:AssetsAndLiabilitiesLesseeTableTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90ZXh0cmVnaW9uOjQ3OGU1ZTNhNjY4ZTQ1NWJiMTJkZWIxMTUyYmVhMjQyXzEwOTk1MTE2MzQ3Mzk_71d618b4-8fa3-4d2c-89db-a18688d202bb">&lt;div&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Supplemental balance sheet information related to leases is as follows:&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:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:84.957%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.843%"/&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:left;vertical-align:bottom"&gt;&lt;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2021&lt;/span&gt;&lt;/div&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%"&gt;Operating leases&lt;/span&gt;&lt;/td&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 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Operating lease right-of-use assets&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;21,613&#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 style="height:14pt"&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt 0 13pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:3pt double #000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Operating lease liabilities, current&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;3,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;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Operating lease liabilities, non-current&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:120%"&gt;17,842&#160;&lt;/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 23.5pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Total operating lease liabilities&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;21,706&#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 style="height:15pt"&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 #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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%"&gt;Finance leases&lt;/span&gt;&lt;/td&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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Furniture and fixtures&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;869&#160;&lt;/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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Accumulated depreciation&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;(14)&lt;/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 23.5pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTplZDExYTJmN2FlZWQ0NTU1ODJmNzUyZmFhYmNjYjc3ZC90YWJsZXJhbmdlOmVkMTFhMmY3YWVlZDQ1NTU4MmY3NTJmYWFiY2NiNzdkXzExLTAtMS0xLTM2ODIw_a28e4118-b508-44e8-98fe-f9980d536268"&gt;&lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTplZDExYTJmN2FlZWQ0NTU1ODJmNzUyZmFhYmNjYjc3ZC90YWJsZXJhbmdlOmVkMTFhMmY3YWVlZDQ1NTU4MmY3NTJmYWFiY2NiNzdkXzExLTAtMS0xLTM2ODIw_f8d94a1f-84c6-4e59-94df-0ff8d68ad1ca"&gt;Furniture and fixtures, net&lt;/span&gt;&lt;/span&gt;&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;855&#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 style="height:14pt"&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt 0 13pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:3pt double #000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Accrued liabilities&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;119&#160;&lt;/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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Other liabilities, non-current&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;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;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 23.5pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTplZDExYTJmN2FlZWQ0NTU1ODJmNzUyZmFhYmNjYjc3ZC90YWJsZXJhbmdlOmVkMTFhMmY3YWVlZDQ1NTU4MmY3NTJmYWFiY2NiNzdkXzE1LTAtMS0xLTM2ODM2_22026826-4dd6-4ff6-9f7e-550a7a08b1ad"&gt;&lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTplZDExYTJmN2FlZWQ0NTU1ODJmNzUyZmFhYmNjYjc3ZC90YWJsZXJhbmdlOmVkMTFhMmY3YWVlZDQ1NTU4MmY3NTJmYWFiY2NiNzdkXzE1LTAtMS0xLTM2ODM2_c0ef8b58-57da-408c-809e-ac790c4d5af4"&gt;Total finance lease liabilities&lt;/span&gt;&lt;/span&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 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;860&#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;&lt;div&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:84.957%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.843%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr style="height:33pt"&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%"&gt;Weighted-average remaining lease term:&lt;/span&gt;&lt;/td&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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Operating leases&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;div style="text-align:right"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;6 years&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Finance leases&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;div style="text-align:right"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;6.3 years&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height:14pt"&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt 0 13pt"/&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;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%"&gt;Weighted-average discount rate:&lt;/span&gt;&lt;/td&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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Operating leases&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2.20&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Finance leases&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:120%"&gt;2.24&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</pubm:AssetsAndLiabilitiesLesseeTableTextBlock>
    <us-gaap:OperatingLeaseRightOfUseAsset
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTplZDExYTJmN2FlZWQ0NTU1ODJmNzUyZmFhYmNjYjc3ZC90YWJsZXJhbmdlOmVkMTFhMmY3YWVlZDQ1NTU4MmY3NTJmYWFiY2NiNzdkXzItMS0xLTEtMzg3MzY_e1c65137-c77c-4377-84cc-1ae211cabfc0"
      unitRef="usd">21613000</us-gaap:OperatingLeaseRightOfUseAsset>
    <us-gaap:OperatingLeaseLiabilityCurrent
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTplZDExYTJmN2FlZWQ0NTU1ODJmNzUyZmFhYmNjYjc3ZC90YWJsZXJhbmdlOmVkMTFhMmY3YWVlZDQ1NTU4MmY3NTJmYWFiY2NiNzdkXzQtMS0xLTEtMzY4MzU_c244be26-f24d-4e32-9bf5-649e15502e64"
      unitRef="usd">3864000</us-gaap:OperatingLeaseLiabilityCurrent>
    <us-gaap:OperatingLeaseLiabilityNoncurrent
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTplZDExYTJmN2FlZWQ0NTU1ODJmNzUyZmFhYmNjYjc3ZC90YWJsZXJhbmdlOmVkMTFhMmY3YWVlZDQ1NTU4MmY3NTJmYWFiY2NiNzdkXzUtMS0xLTEtMzg3NDE_e24b7020-3d75-4a1e-9d05-d61a4ce4c39a"
      unitRef="usd">17842000</us-gaap:OperatingLeaseLiabilityNoncurrent>
    <us-gaap:OperatingLeaseLiability
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTplZDExYTJmN2FlZWQ0NTU1ODJmNzUyZmFhYmNjYjc3ZC90YWJsZXJhbmdlOmVkMTFhMmY3YWVlZDQ1NTU4MmY3NTJmYWFiY2NiNzdkXzYtMS0xLTEtMzY4MzU_3e5c9331-c4b1-426a-b1dc-31daaf44c642"
      unitRef="usd">21706000</us-gaap:OperatingLeaseLiability>
    <us-gaap:FinanceLeaseRightOfUseAssetBeforeAccumulatedAmortization
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTplZDExYTJmN2FlZWQ0NTU1ODJmNzUyZmFhYmNjYjc3ZC90YWJsZXJhbmdlOmVkMTFhMmY3YWVlZDQ1NTU4MmY3NTJmYWFiY2NiNzdkXzktMS0xLTEtMzg3NTU_b79e4f11-2450-4f15-b6e7-b3ae0c501ee1"
      unitRef="usd">869000</us-gaap:FinanceLeaseRightOfUseAssetBeforeAccumulatedAmortization>
    <us-gaap:FinanceLeaseRightOfUseAssetAccumulatedAmortization
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTplZDExYTJmN2FlZWQ0NTU1ODJmNzUyZmFhYmNjYjc3ZC90YWJsZXJhbmdlOmVkMTFhMmY3YWVlZDQ1NTU4MmY3NTJmYWFiY2NiNzdkXzEwLTEtMS0xLTM4NzU3_3d0ad3f9-0a9c-4bbc-8846-59e2248914d2"
      unitRef="usd">14000</us-gaap:FinanceLeaseRightOfUseAssetAccumulatedAmortization>
    <us-gaap:FinanceLeaseRightOfUseAsset
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTplZDExYTJmN2FlZWQ0NTU1ODJmNzUyZmFhYmNjYjc3ZC90YWJsZXJhbmdlOmVkMTFhMmY3YWVlZDQ1NTU4MmY3NTJmYWFiY2NiNzdkXzExLTEtMS0xLTM4NzU5_c0f37c85-f3aa-4d10-948c-cf1b332bb0a2"
      unitRef="usd">855000</us-gaap:FinanceLeaseRightOfUseAsset>
    <us-gaap:FinanceLeaseLiabilityCurrent
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTplZDExYTJmN2FlZWQ0NTU1ODJmNzUyZmFhYmNjYjc3ZC90YWJsZXJhbmdlOmVkMTFhMmY3YWVlZDQ1NTU4MmY3NTJmYWFiY2NiNzdkXzEzLTEtMS0xLTM2ODM2_83ce371f-e745-41fa-ab4c-1562b68c579d"
      unitRef="usd">119000</us-gaap:FinanceLeaseLiabilityCurrent>
    <us-gaap:FinanceLeaseLiabilityNoncurrent
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTplZDExYTJmN2FlZWQ0NTU1ODJmNzUyZmFhYmNjYjc3ZC90YWJsZXJhbmdlOmVkMTFhMmY3YWVlZDQ1NTU4MmY3NTJmYWFiY2NiNzdkXzE0LTEtMS0xLTM4NzY5_a6dc589b-3829-4587-84ae-4da2edb79995"
      unitRef="usd">741000</us-gaap:FinanceLeaseLiabilityNoncurrent>
    <us-gaap:FinanceLeaseLiability
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTplZDExYTJmN2FlZWQ0NTU1ODJmNzUyZmFhYmNjYjc3ZC90YWJsZXJhbmdlOmVkMTFhMmY3YWVlZDQ1NTU4MmY3NTJmYWFiY2NiNzdkXzE1LTEtMS0xLTM2ODM2_824d1dd9-777d-412f-8f82-b5ed1fbe67b5"
      unitRef="usd">860000</us-gaap:FinanceLeaseLiability>
    <us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZToyOWI3NjI5M2U5NDA0ZTJhOGVjYWQ0MDZlY2Q0MzU5ZS90YWJsZXJhbmdlOjI5Yjc2MjkzZTk0MDRlMmE4ZWNhZDQwNmVjZDQzNTllXzItMS0xLTEtMzg3ODAvdGV4dHJlZ2lvbjo4MjAzYTIyZmUxNjA0OGIwODJiNmJiZDg1NDk2MjEyOF8yNzQ4Nzc5MDY5NDU4_9a614dbf-644a-4a54-8772-de2b4d7aef7d">P6Y</us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1>
    <us-gaap:FinanceLeaseWeightedAverageRemainingLeaseTerm1
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZToyOWI3NjI5M2U5NDA0ZTJhOGVjYWQ0MDZlY2Q0MzU5ZS90YWJsZXJhbmdlOjI5Yjc2MjkzZTk0MDRlMmE4ZWNhZDQwNmVjZDQzNTllXzMtMS0xLTEtMzg3ODUvdGV4dHJlZ2lvbjoyNGUzZDQzNjlhODY0NDlhYTQ0MDhhMWM0NjYwOTNiNV8yNzQ4Nzc5MDY5NDU2_0fe0ff9c-265e-4563-9bb9-c1cdc9a18c0b">P6Y3M18D</us-gaap:FinanceLeaseWeightedAverageRemainingLeaseTerm1>
    <us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZToyOWI3NjI5M2U5NDA0ZTJhOGVjYWQ0MDZlY2Q0MzU5ZS90YWJsZXJhbmdlOjI5Yjc2MjkzZTk0MDRlMmE4ZWNhZDQwNmVjZDQzNTllXzYtMS0xLTEtMzY4Nzk_bbd4f6c9-44ff-4093-9478-9bfdb46391c8"
      unitRef="number">0.0220</us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent>
    <us-gaap:FinanceLeaseWeightedAverageDiscountRatePercent
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="4"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZToyOWI3NjI5M2U5NDA0ZTJhOGVjYWQ0MDZlY2Q0MzU5ZS90YWJsZXJhbmdlOjI5Yjc2MjkzZTk0MDRlMmE4ZWNhZDQwNmVjZDQzNTllXzctMS0xLTEtMzY4ODA_216142ff-4ccc-479e-b0e1-1438bee97cae"
      unitRef="number">0.0224</us-gaap:FinanceLeaseWeightedAverageDiscountRatePercent>
    <us-gaap:LesseeOperatingLeaseLiabilityMaturityTableTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90ZXh0cmVnaW9uOjQ3OGU1ZTNhNjY4ZTQ1NWJiMTJkZWIxMTUyYmVhMjQyXzEwOTk1MTE2MzQ3NDE_debfc6ed-c100-4bd7-903a-fde5df3c56e9">&lt;div&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;As of December 31, 2021, the maturities of lease liabilities under operating and finance leases were as follows:&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 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:47.137%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.726%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.726%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.729%"/&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:10pt;font-weight:400;line-height:120%"&gt;Year ending December 31,&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Operating leases&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Finance leases&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2022&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;4,298&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;136&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;4,434&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2023&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:120%"&gt;3,470&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;140&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;3,610&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2024&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;3,459&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;145&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;3,604&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2025&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:120%"&gt;3,563&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;149&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;3,712&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2026&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;3,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;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;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:120%"&gt;153&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;3,823&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Thereafter&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:120%"&gt;4,750&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;200&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;4,950&#160;&lt;/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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Total minimum lease payments&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;23,210&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;923&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;24,133&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Less: imputed interest&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:3pt double #000;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:120%"&gt;(1,504)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:3pt double #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:3pt double #000;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:120%"&gt;(63)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:3pt double #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:3pt double #000;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:120%"&gt;(1,567)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:3pt double #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 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Total present value of lease liabilities&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 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;21,706&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;860&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;22,566&#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;</us-gaap:LesseeOperatingLeaseLiabilityMaturityTableTextBlock>
    <us-gaap:FinanceLeaseLiabilityMaturityTableTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90ZXh0cmVnaW9uOjQ3OGU1ZTNhNjY4ZTQ1NWJiMTJkZWIxMTUyYmVhMjQyXzEwOTk1MTE2NDAwNDU_d91ec2b4-32a3-4044-9bea-efbc47bf2320">&lt;div&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;As of December 31, 2021, the maturities of lease liabilities under operating and finance leases were as follows:&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 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:47.137%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.726%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.726%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.729%"/&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:10pt;font-weight:400;line-height:120%"&gt;Year ending December 31,&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Operating leases&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Finance leases&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2022&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;4,298&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;136&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;4,434&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2023&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:120%"&gt;3,470&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;140&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;3,610&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2024&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;3,459&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;145&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;3,604&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2025&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:120%"&gt;3,563&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;149&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;3,712&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2026&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;3,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;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;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:120%"&gt;153&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;3,823&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Thereafter&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:120%"&gt;4,750&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;200&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;4,950&#160;&lt;/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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Total minimum lease payments&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;23,210&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;923&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;24,133&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Less: imputed interest&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:3pt double #000;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:120%"&gt;(1,504)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:3pt double #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:3pt double #000;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:120%"&gt;(63)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:3pt double #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:3pt double #000;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:120%"&gt;(1,567)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:3pt double #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 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Total present value of lease liabilities&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 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;21,706&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;860&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;22,566&#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;</us-gaap:FinanceLeaseLiabilityMaturityTableTextBlock>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTo5NTgzODgxYTcxZWI0NmVlOGJhYzlkYzY4ZDdjNjlmZS90YWJsZXJhbmdlOjk1ODM4ODFhNzFlYjQ2ZWU4YmFjOWRjNjhkN2M2OWZlXzAtMS0xLTEtMzg4MDY_c4236f50-43d1-4e51-84dc-5535486cb439"
      unitRef="usd">4298000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths>
    <us-gaap:FinanceLeaseLiabilityPaymentsDueNextTwelveMonths
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTo5NTgzODgxYTcxZWI0NmVlOGJhYzlkYzY4ZDdjNjlmZS90YWJsZXJhbmdlOjk1ODM4ODFhNzFlYjQ2ZWU4YmFjOWRjNjhkN2M2OWZlXzEtMy0xLTEtNDE0NjE_bac3b310-49ad-4db7-b7dd-294debd0bfb4"
      unitRef="usd">136000</us-gaap:FinanceLeaseLiabilityPaymentsDueNextTwelveMonths>
    <pubm:LesseeOperatingAndFinanceLeaseLiabilityToBePaidYearOne
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTo5NTgzODgxYTcxZWI0NmVlOGJhYzlkYzY4ZDdjNjlmZS90YWJsZXJhbmdlOjk1ODM4ODFhNzFlYjQ2ZWU4YmFjOWRjNjhkN2M2OWZlXzEtNS0xLTEtNDE0Njc_ab2af56e-b5dc-4da7-b822-f38ae26cf728"
      unitRef="usd">4434000</pubm:LesseeOperatingAndFinanceLeaseLiabilityToBePaidYearOne>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearTwo
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTo5NTgzODgxYTcxZWI0NmVlOGJhYzlkYzY4ZDdjNjlmZS90YWJsZXJhbmdlOjk1ODM4ODFhNzFlYjQ2ZWU4YmFjOWRjNjhkN2M2OWZlXzEtMS0xLTEtMzg4MDY_fb118e70-a51d-4f7e-8b25-4ae86c10b0c5"
      unitRef="usd">3470000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearTwo>
    <us-gaap:FinanceLeaseLiabilityPaymentsDueYearTwo
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTo5NTgzODgxYTcxZWI0NmVlOGJhYzlkYzY4ZDdjNjlmZS90YWJsZXJhbmdlOjk1ODM4ODFhNzFlYjQ2ZWU4YmFjOWRjNjhkN2M2OWZlXzItMy0xLTEtNDE0NjE_a527dbde-ca6d-4014-a630-957397001b56"
      unitRef="usd">140000</us-gaap:FinanceLeaseLiabilityPaymentsDueYearTwo>
    <pubm:LesseeOperatingAndFinanceLeaseLiabilityToBePaidYearTwo
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTo5NTgzODgxYTcxZWI0NmVlOGJhYzlkYzY4ZDdjNjlmZS90YWJsZXJhbmdlOjk1ODM4ODFhNzFlYjQ2ZWU4YmFjOWRjNjhkN2M2OWZlXzItNS0xLTEtNDE0Njg_af4259c4-905d-42af-9a8a-c94d149b90a4"
      unitRef="usd">3610000</pubm:LesseeOperatingAndFinanceLeaseLiabilityToBePaidYearTwo>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearThree
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTo5NTgzODgxYTcxZWI0NmVlOGJhYzlkYzY4ZDdjNjlmZS90YWJsZXJhbmdlOjk1ODM4ODFhNzFlYjQ2ZWU4YmFjOWRjNjhkN2M2OWZlXzItMS0xLTEtMzg4MDY_ce3fc173-2736-4b2c-b22d-cdbe4c7a42cf"
      unitRef="usd">3459000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearThree>
    <us-gaap:FinanceLeaseLiabilityPaymentsDueYearThree
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTo5NTgzODgxYTcxZWI0NmVlOGJhYzlkYzY4ZDdjNjlmZS90YWJsZXJhbmdlOjk1ODM4ODFhNzFlYjQ2ZWU4YmFjOWRjNjhkN2M2OWZlXzMtMy0xLTEtNDE0NjE_715f04ab-f4a5-4a23-9ae2-e1e0e18c1043"
      unitRef="usd">145000</us-gaap:FinanceLeaseLiabilityPaymentsDueYearThree>
    <pubm:LesseeOperatingAndFinanceLeaseLiabilityToBePaidYearThree
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTo5NTgzODgxYTcxZWI0NmVlOGJhYzlkYzY4ZDdjNjlmZS90YWJsZXJhbmdlOjk1ODM4ODFhNzFlYjQ2ZWU4YmFjOWRjNjhkN2M2OWZlXzMtNS0xLTEtNDE1MzI_03a45e85-38bf-4863-998e-cb0b0621566d"
      unitRef="usd">3604000</pubm:LesseeOperatingAndFinanceLeaseLiabilityToBePaidYearThree>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFour
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTo5NTgzODgxYTcxZWI0NmVlOGJhYzlkYzY4ZDdjNjlmZS90YWJsZXJhbmdlOjk1ODM4ODFhNzFlYjQ2ZWU4YmFjOWRjNjhkN2M2OWZlXzMtMS0xLTEtMzg4MDY_1aae631d-2cf6-453e-983f-f1aa6c75e67a"
      unitRef="usd">3563000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFour>
    <us-gaap:FinanceLeaseLiabilityPaymentsDueYearFour
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTo5NTgzODgxYTcxZWI0NmVlOGJhYzlkYzY4ZDdjNjlmZS90YWJsZXJhbmdlOjk1ODM4ODFhNzFlYjQ2ZWU4YmFjOWRjNjhkN2M2OWZlXzQtMy0xLTEtNDE0NjE_a9994b35-38df-4a92-bc88-ee61773c8b35"
      unitRef="usd">149000</us-gaap:FinanceLeaseLiabilityPaymentsDueYearFour>
    <pubm:LesseeOperatingAndFinanceLeaseLiabilityToBePaidYearFour
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTo5NTgzODgxYTcxZWI0NmVlOGJhYzlkYzY4ZDdjNjlmZS90YWJsZXJhbmdlOjk1ODM4ODFhNzFlYjQ2ZWU4YmFjOWRjNjhkN2M2OWZlXzQtNS0xLTEtNDE1MzI_14543dfe-09b8-4769-be1f-1f47f81f63b0"
      unitRef="usd">3712000</pubm:LesseeOperatingAndFinanceLeaseLiabilityToBePaidYearFour>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFive
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTo5NTgzODgxYTcxZWI0NmVlOGJhYzlkYzY4ZDdjNjlmZS90YWJsZXJhbmdlOjk1ODM4ODFhNzFlYjQ2ZWU4YmFjOWRjNjhkN2M2OWZlXzQtMS0xLTEtMzg4MDY_aff8fe1b-2c1b-4c99-92a3-b39197fa75c4"
      unitRef="usd">3670000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFive>
    <us-gaap:FinanceLeaseLiabilityPaymentsDueYearFive
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTo5NTgzODgxYTcxZWI0NmVlOGJhYzlkYzY4ZDdjNjlmZS90YWJsZXJhbmdlOjk1ODM4ODFhNzFlYjQ2ZWU4YmFjOWRjNjhkN2M2OWZlXzUtMy0xLTEtNDE0NjE_e8339f50-deee-4a78-8095-03c9cc0c41e5"
      unitRef="usd">153000</us-gaap:FinanceLeaseLiabilityPaymentsDueYearFive>
    <pubm:LesseeOperatingAndFinanceLeaseLiabilityToBePaidYearFive
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTo5NTgzODgxYTcxZWI0NmVlOGJhYzlkYzY4ZDdjNjlmZS90YWJsZXJhbmdlOjk1ODM4ODFhNzFlYjQ2ZWU4YmFjOWRjNjhkN2M2OWZlXzUtNS0xLTEtNDE0Nzk_54c67c13-6f97-4969-90c7-222c09b90f20"
      unitRef="usd">3823000</pubm:LesseeOperatingAndFinanceLeaseLiabilityToBePaidYearFive>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTo5NTgzODgxYTcxZWI0NmVlOGJhYzlkYzY4ZDdjNjlmZS90YWJsZXJhbmdlOjk1ODM4ODFhNzFlYjQ2ZWU4YmFjOWRjNjhkN2M2OWZlXzUtMS0xLTEtMzg4MDY_85845fdf-de9b-44d6-819f-5cc3e505d701"
      unitRef="usd">4750000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive>
    <us-gaap:FinanceLeaseLiabilityPaymentsDueAfterYearFive
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTo5NTgzODgxYTcxZWI0NmVlOGJhYzlkYzY4ZDdjNjlmZS90YWJsZXJhbmdlOjk1ODM4ODFhNzFlYjQ2ZWU4YmFjOWRjNjhkN2M2OWZlXzYtMy0xLTEtNDE0NjE_bed804c9-3093-4497-86b0-5a69790d9eaa"
      unitRef="usd">200000</us-gaap:FinanceLeaseLiabilityPaymentsDueAfterYearFive>
    <pubm:LesseeOperatingAndFinanceLeaseLiabilityToBePaidAfterYearFive
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTo5NTgzODgxYTcxZWI0NmVlOGJhYzlkYzY4ZDdjNjlmZS90YWJsZXJhbmdlOjk1ODM4ODFhNzFlYjQ2ZWU4YmFjOWRjNjhkN2M2OWZlXzYtNS0xLTEtNDE1MzI_adf6adfc-6d2b-491c-826d-e3e4768c3fd6"
      unitRef="usd">4950000</pubm:LesseeOperatingAndFinanceLeaseLiabilityToBePaidAfterYearFive>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDue
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTo5NTgzODgxYTcxZWI0NmVlOGJhYzlkYzY4ZDdjNjlmZS90YWJsZXJhbmdlOjk1ODM4ODFhNzFlYjQ2ZWU4YmFjOWRjNjhkN2M2OWZlXzYtMS0xLTEtMzg4MDY_7787fc6f-7da3-4917-99cf-897879eae625"
      unitRef="usd">23210000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDue>
    <us-gaap:FinanceLeaseLiabilityPaymentsDue
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTo5NTgzODgxYTcxZWI0NmVlOGJhYzlkYzY4ZDdjNjlmZS90YWJsZXJhbmdlOjk1ODM4ODFhNzFlYjQ2ZWU4YmFjOWRjNjhkN2M2OWZlXzctMy0xLTEtNDE1NDM_689795a4-47dc-45ca-935c-6326809cb7c4"
      unitRef="usd">923000</us-gaap:FinanceLeaseLiabilityPaymentsDue>
    <pubm:LesseeOperatingAndFinanceLeaseLiabilityToBePaid
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTo5NTgzODgxYTcxZWI0NmVlOGJhYzlkYzY4ZDdjNjlmZS90YWJsZXJhbmdlOjk1ODM4ODFhNzFlYjQ2ZWU4YmFjOWRjNjhkN2M2OWZlXzctNS0xLTEtNDE1MzI_d61e9084-f1c7-42dc-8044-b4d1f7ce3534"
      unitRef="usd">24133000</pubm:LesseeOperatingAndFinanceLeaseLiabilityToBePaid>
    <us-gaap:LesseeOperatingLeaseLiabilityUndiscountedExcessAmount
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTo5NTgzODgxYTcxZWI0NmVlOGJhYzlkYzY4ZDdjNjlmZS90YWJsZXJhbmdlOjk1ODM4ODFhNzFlYjQ2ZWU4YmFjOWRjNjhkN2M2OWZlXzctMS0xLTEtMzg4MDY_03d30c6e-f58b-4bb7-99e7-9b40b04e6349"
      unitRef="usd">1504000</us-gaap:LesseeOperatingLeaseLiabilityUndiscountedExcessAmount>
    <us-gaap:FinanceLeaseLiabilityUndiscountedExcessAmount
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTo5NTgzODgxYTcxZWI0NmVlOGJhYzlkYzY4ZDdjNjlmZS90YWJsZXJhbmdlOjk1ODM4ODFhNzFlYjQ2ZWU4YmFjOWRjNjhkN2M2OWZlXzgtMy0xLTEtNDE0NzU_3c51cac8-897a-4de3-b67c-cf4cf7185137"
      unitRef="usd">63000</us-gaap:FinanceLeaseLiabilityUndiscountedExcessAmount>
    <pubm:LesseeOperatingAndFinanceLeaseLiabilityUndiscountedExcessAmount
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTo5NTgzODgxYTcxZWI0NmVlOGJhYzlkYzY4ZDdjNjlmZS90YWJsZXJhbmdlOjk1ODM4ODFhNzFlYjQ2ZWU4YmFjOWRjNjhkN2M2OWZlXzgtNS0xLTEtNDE0ODE_26d68a3f-ec0d-4563-a3a7-98ba400032f7"
      unitRef="usd">1567000</pubm:LesseeOperatingAndFinanceLeaseLiabilityUndiscountedExcessAmount>
    <us-gaap:OperatingLeaseLiability
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTo5NTgzODgxYTcxZWI0NmVlOGJhYzlkYzY4ZDdjNjlmZS90YWJsZXJhbmdlOjk1ODM4ODFhNzFlYjQ2ZWU4YmFjOWRjNjhkN2M2OWZlXzgtMS0xLTEtMzg4MDY_56eeb0af-365a-487d-a92b-7614d55dfd86"
      unitRef="usd">21706000</us-gaap:OperatingLeaseLiability>
    <us-gaap:FinanceLeaseLiability
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTo5NTgzODgxYTcxZWI0NmVlOGJhYzlkYzY4ZDdjNjlmZS90YWJsZXJhbmdlOjk1ODM4ODFhNzFlYjQ2ZWU4YmFjOWRjNjhkN2M2OWZlXzktMy0xLTEtNDE1NDM_4450ce0e-d173-4567-9bff-cc86fb319449"
      unitRef="usd">860000</us-gaap:FinanceLeaseLiability>
    <pubm:OperatingAndFinanceLeaseLiability
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTo5NTgzODgxYTcxZWI0NmVlOGJhYzlkYzY4ZDdjNjlmZS90YWJsZXJhbmdlOjk1ODM4ODFhNzFlYjQ2ZWU4YmFjOWRjNjhkN2M2OWZlXzktNS0xLTEtNDE1MzI_82c5192f-0e04-429b-ac7b-e778c5b16c85"
      unitRef="usd">22566000</pubm:OperatingAndFinanceLeaseLiability>
    <us-gaap:ScheduleOfFutureMinimumLeasePaymentsForCapitalLeasesTableTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90ZXh0cmVnaW9uOjQ3OGU1ZTNhNjY4ZTQ1NWJiMTJkZWIxMTUyYmVhMjQyXzEwOTk1MTE2MzQ3NDI_5a220112-17db-41b8-8c11-966083b2de33">&lt;div&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;A summary of the future minimum lease commitments, as determined under Topic 840, for all non-cancelable operating lease agreements were as follows as of December 31, 2020:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br/&gt;&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:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:84.957%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.843%"/&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:10pt;font-weight:400;line-height:120%"&gt;2021&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2,179&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2022&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;1,031&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2023&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:120%"&gt;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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#160;&#160;&#160;Total minimum lease commitments&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 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;3,318&#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;</us-gaap:ScheduleOfFutureMinimumLeasePaymentsForCapitalLeasesTableTextBlock>
    <us-gaap:OperatingLeasesFutureMinimumPaymentsDueCurrent
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTowM2E1NzdjZWYxOWM0MWY2YmU1Mzg2NWM3NDI1MWIyNS90YWJsZXJhbmdlOjAzYTU3N2NlZjE5YzQxZjZiZTUzODY1Yzc0MjUxYjI1XzAtMS0xLTEtMzg4MzI_1bb7ccd4-c207-47ed-bfed-bd419de90907"
      unitRef="usd">2179000</us-gaap:OperatingLeasesFutureMinimumPaymentsDueCurrent>
    <us-gaap:OperatingLeasesFutureMinimumPaymentsDueInTwoYears
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTowM2E1NzdjZWYxOWM0MWY2YmU1Mzg2NWM3NDI1MWIyNS90YWJsZXJhbmdlOjAzYTU3N2NlZjE5YzQxZjZiZTUzODY1Yzc0MjUxYjI1XzEtMS0xLTEtMzg4MzQ_ab4b5ef0-c21d-4e42-bf01-66db830e4c18"
      unitRef="usd">1031000</us-gaap:OperatingLeasesFutureMinimumPaymentsDueInTwoYears>
    <us-gaap:OperatingLeasesFutureMinimumPaymentsDueInThreeYears
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTowM2E1NzdjZWYxOWM0MWY2YmU1Mzg2NWM3NDI1MWIyNS90YWJsZXJhbmdlOjAzYTU3N2NlZjE5YzQxZjZiZTUzODY1Yzc0MjUxYjI1XzItMS0xLTEtMzg4MzQ_920b525d-01ce-4c12-8cff-701027e9acec"
      unitRef="usd">108000</us-gaap:OperatingLeasesFutureMinimumPaymentsDueInThreeYears>
    <us-gaap:OperatingLeasesFutureMinimumPaymentsDue
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl84ODcvZnJhZzo0NzhlNWUzYTY2OGU0NTViYjEyZGViMTE1MmJlYTI0Mi90YWJsZTowM2E1NzdjZWYxOWM0MWY2YmU1Mzg2NWM3NDI1MWIyNS90YWJsZXJhbmdlOjAzYTU3N2NlZjE5YzQxZjZiZTUzODY1Yzc0MjUxYjI1XzYtMS0xLTEtMzg4MzQ_dddca667-195d-47fc-9dfc-436e36c1ba4f"
      unitRef="usd">3318000</us-gaap:OperatingLeasesFutureMinimumPaymentsDue>
    <us-gaap:CommitmentsAndContingenciesDisclosureTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMTUvZnJhZzo5YmQ5NTY5MWI4N2E0NmVkOWRiOGM2MjgwZDQxNTM5NC90ZXh0cmVnaW9uOjliZDk1NjkxYjg3YTQ2ZWQ5ZGI4YzYyODBkNDE1Mzk0XzQxNTQ_eeaf004c-1067-4429-8a78-35a926f722c9">Commitments and Contingencies &lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Contractual Obligations&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In the normal course of business, we enter into contractual obligations with various parties, primarily relate to minimum contractual payments due to data center providers. As of December&#160;31, 2021, our outstanding contractual obligations with a term of 12 months or longer consist of the following (in thousands):&lt;/span&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:84.957%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.843%"/&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:700;line-height:120%"&gt;Years ending December 31,&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;Contractual Obligations&lt;/span&gt;&lt;/div&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2022&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;10,506&#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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2023&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;14,598&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2024&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:120%"&gt;6,540&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2025&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;137&#160;&lt;/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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Total future minimum commitments, net&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;31,781&#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;&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Letters of Credit&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;As of December&#160;31, 2021, the Company had two irrevocable letters of credit outstanding related to noncancelable facilities leases in the amounts of $3.5 million and $0.7&#160;million, with annual automatic renewal and final expiration dates in July 2028 and June 2022, respectively. As of December&#160;31, 2020, the Company had an irrevocable letter of credit outstanding related to noncancelable facilities leases in the amounts of $0.7&#160;million, with annual automatic renewal and final expiration date in June 2022.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Legal Matters&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;From time to time, the Company has become involved in claims and other legal matters arising in the normal course of business. The Company investigates these claims as they arise and accrues for contingencies when the Company believes that a loss is probable and that the Company can reasonably estimate the amount of any such loss. The Company has made an assessment of the probability of incurring any such losses and whether or not those losses are estimable and although claims are inherently unpredictable the Company concluded that these losses are not material to the Company&#x2019;s business, financial position, results of operations, or cash flows. To the extent there is a reasonable possibility that a loss exceeding amounts already recognized may be incurred, and the amount of such additional loss would be material, the Company will either disclose the estimated additional loss or state that such an estimate cannot be made.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Indemnification&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In the normal course of business, the Company enters into contracts and agreements that contain a variety of representations and warranties and provide for general indemnification. The Company&#x2019;s exposure under these agreements is unknown because it involves future claims that may be made against the Company, but have not yet been made. To date, the Company has not paid any material claims or been required to defend any actions related to its indemnification obligations. However, the Company may record charges in the future as a result of these indemnification obligations. In addition, the Company has indemnification agreements with certain of its directors and executive officers that require it, among other things, to indemnify them against certain liabilities that may arise due to their status or service as directors or officers of the Company. The terms of such obligations may vary.&lt;/span&gt;&lt;/div&gt;</us-gaap:CommitmentsAndContingenciesDisclosureTextBlock>
    <srt:ContractualObligationFiscalYearMaturityScheduleTableTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMTUvZnJhZzo5YmQ5NTY5MWI4N2E0NmVkOWRiOGM2MjgwZDQxNTM5NC90ZXh0cmVnaW9uOjliZDk1NjkxYjg3YTQ2ZWQ5ZGI4YzYyODBkNDE1Mzk0XzQxNTU_42bd0723-6062-43c3-a3a7-23db846f032e">As of December&#160;31, 2021, our outstanding contractual obligations with a term of 12 months or longer consist of the following (in thousands):&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:84.957%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.843%"/&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:700;line-height:120%"&gt;Years ending December 31,&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;Contractual Obligations&lt;/span&gt;&lt;/div&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2022&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;10,506&#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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2023&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;14,598&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2024&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:120%"&gt;6,540&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2025&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;137&#160;&lt;/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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Total future minimum commitments, net&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;31,781&#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;</srt:ContractualObligationFiscalYearMaturityScheduleTableTextBlock>
    <us-gaap:ContractualObligationDueInNextTwelveMonths
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMTUvZnJhZzo5YmQ5NTY5MWI4N2E0NmVkOWRiOGM2MjgwZDQxNTM5NC90YWJsZTo0ZmE4ZDBkOTFjNTE0ZmFmODAzMTE2ZTk5ZDVmMWUwZi90YWJsZXJhbmdlOjRmYThkMGQ5MWM1MTRmYWY4MDMxMTZlOTlkNWYxZTBmXzEtMy0xLTEtMjgxMDU_c07e7177-a534-41d7-8558-bb46d29dafbd"
      unitRef="usd">10506000</us-gaap:ContractualObligationDueInNextTwelveMonths>
    <us-gaap:ContractualObligationDueInSecondYear
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMTUvZnJhZzo5YmQ5NTY5MWI4N2E0NmVkOWRiOGM2MjgwZDQxNTM5NC90YWJsZTo0ZmE4ZDBkOTFjNTE0ZmFmODAzMTE2ZTk5ZDVmMWUwZi90YWJsZXJhbmdlOjRmYThkMGQ5MWM1MTRmYWY4MDMxMTZlOTlkNWYxZTBmXzItMy0xLTEtMjgxMDU_197ba7af-ddba-4423-b9c2-277dc8e9fd8f"
      unitRef="usd">14598000</us-gaap:ContractualObligationDueInSecondYear>
    <us-gaap:ContractualObligationDueInThirdYear
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMTUvZnJhZzo5YmQ5NTY5MWI4N2E0NmVkOWRiOGM2MjgwZDQxNTM5NC90YWJsZTo0ZmE4ZDBkOTFjNTE0ZmFmODAzMTE2ZTk5ZDVmMWUwZi90YWJsZXJhbmdlOjRmYThkMGQ5MWM1MTRmYWY4MDMxMTZlOTlkNWYxZTBmXzMtMy0xLTEtMjgxMDU_568b6b00-3d5d-4d81-aa6b-7fb427ddef04"
      unitRef="usd">6540000</us-gaap:ContractualObligationDueInThirdYear>
    <us-gaap:ContractualObligationDueInFourthYear
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMTUvZnJhZzo5YmQ5NTY5MWI4N2E0NmVkOWRiOGM2MjgwZDQxNTM5NC90YWJsZTo0ZmE4ZDBkOTFjNTE0ZmFmODAzMTE2ZTk5ZDVmMWUwZi90YWJsZXJhbmdlOjRmYThkMGQ5MWM1MTRmYWY4MDMxMTZlOTlkNWYxZTBmXzQtMS0xLTEtMzc0NTI_f1c8f352-0f89-4498-a0d5-fd1e2cc4eaaf"
      unitRef="usd">137000</us-gaap:ContractualObligationDueInFourthYear>
    <us-gaap:ContractualObligation
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMTUvZnJhZzo5YmQ5NTY5MWI4N2E0NmVkOWRiOGM2MjgwZDQxNTM5NC90YWJsZTo0ZmE4ZDBkOTFjNTE0ZmFmODAzMTE2ZTk5ZDVmMWUwZi90YWJsZXJhbmdlOjRmYThkMGQ5MWM1MTRmYWY4MDMxMTZlOTlkNWYxZTBmXzQtMy0xLTEtMjgxMDU_5c8dcf6a-17b9-4ac4-ba49-9ef77cac8ee6"
      unitRef="usd">31781000</us-gaap:ContractualObligation>
    <us-gaap:LettersOfCreditOutstandingAmount
      contextRef="id46d1e9d50d347ea9b1dff9fd0e1e059_I20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMTUvZnJhZzo5YmQ5NTY5MWI4N2E0NmVkOWRiOGM2MjgwZDQxNTM5NC90ZXh0cmVnaW9uOjliZDk1NjkxYjg3YTQ2ZWQ5ZGI4YzYyODBkNDE1Mzk0XzI3NDg3NzkwNzQxNjM_dd4df0b2-e1b7-4ceb-87e9-2c851615fbb1"
      unitRef="usd">3500000</us-gaap:LettersOfCreditOutstandingAmount>
    <us-gaap:LettersOfCreditOutstandingAmount
      contextRef="i022040b79b2c45dd8a2b77f880d69ff3_I20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMTUvZnJhZzo5YmQ5NTY5MWI4N2E0NmVkOWRiOGM2MjgwZDQxNTM5NC90ZXh0cmVnaW9uOjliZDk1NjkxYjg3YTQ2ZWQ5ZGI4YzYyODBkNDE1Mzk0XzE0MzM_4018cee9-ae11-49c5-abad-fe40f1c73992"
      unitRef="usd">700000</us-gaap:LettersOfCreditOutstandingAmount>
    <us-gaap:LettersOfCreditOutstandingAmount
      contextRef="i022040b79b2c45dd8a2b77f880d69ff3_I20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMTUvZnJhZzo5YmQ5NTY5MWI4N2E0NmVkOWRiOGM2MjgwZDQxNTM5NC90ZXh0cmVnaW9uOjliZDk1NjkxYjg3YTQ2ZWQ5ZGI4YzYyODBkNDE1Mzk0XzI3NDg3NzkwNzQyMDY_4018cee9-ae11-49c5-abad-fe40f1c73992"
      unitRef="usd">700000</us-gaap:LettersOfCreditOutstandingAmount>
    <us-gaap:PreferredStockTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMjEvZnJhZzo3NjFlMGRhNmYzNGY0Y2M3OTc1YTk5NzU1MzIwOWZlYi90ZXh0cmVnaW9uOjc2MWUwZGE2ZjM0ZjRjYzc5NzVhOTk3NTUzMjA5ZmViXzExNjk_8b41c3a1-7cce-4054-8b34-87539491ec1b">Convertible Preferred Stock&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Upon completion of the IPO on December 11, 2020, all shares of convertible preferred stock outstanding, totaling 33,443,969 shares, were automatically converted into an equivalent number of shares of Class B common stock on a one-to-one basis and their carrying value of $61.2 million was reclassified into stockholders&#x2019; equity. As of December&#160;31, 2020, there were no shares of convertible preferred stock issued and outstanding.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In connection with the IPO, our amended and restated certificate of incorporation became effective, which authorized the issuance of 10,000,000 shares of undesignated preferred stock with a par value of $0.0001 with rights and preferences, including voting rights, designated from time to time by our board of directors.&lt;/span&gt;&lt;/div&gt;</us-gaap:PreferredStockTextBlock>
    <us-gaap:ConvertiblePreferredStockSharesIssuedUponConversion
      contextRef="i768740fa8e9e45cb866898c76981f7d4_I20201211"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMjEvZnJhZzo3NjFlMGRhNmYzNGY0Y2M3OTc1YTk5NzU1MzIwOWZlYi90ZXh0cmVnaW9uOjc2MWUwZGE2ZjM0ZjRjYzc5NzVhOTk3NTUzMjA5ZmViXzk4OTU2MDQ2NTE3MDY_28feeddb-8d5a-4941-9c5f-b0e2db84222c"
      unitRef="shares">33443969</us-gaap:ConvertiblePreferredStockSharesIssuedUponConversion>
    <us-gaap:TemporaryEquityCarryingAmountAttributableToParent
      contextRef="i92fc24f8f61b4c3d97c561abeb422958_I20201211"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMjEvZnJhZzo3NjFlMGRhNmYzNGY0Y2M3OTc1YTk5NzU1MzIwOWZlYi90ZXh0cmVnaW9uOjc2MWUwZGE2ZjM0ZjRjYzc5NzVhOTk3NTUzMjA5ZmViXzI3NDg3NzkwNzExMjE_a858c24a-1455-4ac3-89ca-8cbdc85c2bf8"
      unitRef="usd">61200000</us-gaap:TemporaryEquityCarryingAmountAttributableToParent>
    <us-gaap:PreferredStockSharesAuthorized
      contextRef="ifd205622407447fca897de8cc9fbd3d1_I20201211"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMjEvZnJhZzo3NjFlMGRhNmYzNGY0Y2M3OTc1YTk5NzU1MzIwOWZlYi90ZXh0cmVnaW9uOjc2MWUwZGE2ZjM0ZjRjYzc5NzVhOTk3NTUzMjA5ZmViXzI3NDg3NzkwNzExMzQ_f52e6ab9-3d45-45b2-9a27-9c9921878f11"
      unitRef="shares">10000000</us-gaap:PreferredStockSharesAuthorized>
    <us-gaap:PreferredStockParOrStatedValuePerShare
      contextRef="ifd205622407447fca897de8cc9fbd3d1_I20201211"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMjEvZnJhZzo3NjFlMGRhNmYzNGY0Y2M3OTc1YTk5NzU1MzIwOWZlYi90ZXh0cmVnaW9uOjc2MWUwZGE2ZjM0ZjRjYzc5NzVhOTk3NTUzMjA5ZmViXzI3NDg3NzkwNzExMzg_dd71cd03-30db-46c4-be92-9fba70f224d1"
      unitRef="usdPerShare">0.0001</us-gaap:PreferredStockParOrStatedValuePerShare>
    <us-gaap:StockholdersEquityNoteDisclosureTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMjQvZnJhZzowMTBhMTA3NTdmMmY0ZWRkYjkzNTE5MDQ5Yjc2OTJjNC90ZXh0cmVnaW9uOjAxMGExMDc1N2YyZjRlZGRiOTM1MTkwNDliNzY5MmM0XzM0ODM_2aa09790-a4e6-4f45-962e-0f0c0343b6b0">Stockholders&#x2019; Notes Receivable and Redeemable Common Stock&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In August 2018, the Company loaned its Chief Executive Officer and Chief Growth Officer a total of $4.0 million under secured nonrecourse promissory notes (the &#x201c;Notes&#x201d;). Per the terms of the Notes, they had interest at a rate of 2.42% per annum compounded annually and matured on August 30, 2021, with interest and principal due at maturity. The Notes were secured by pledges of 1.6 million shares of outstanding common stock of the Company owned by the two officers (the &#x201c;Pledged Shares&#x201d;). &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;As the Company&#x2019;s only recourse on the Notes and associated interest was the Pledged Shares, the Notes were accounted for as nonrecourse and recorded to stockholders&#x2019; equity. This was accounted for as though the Company repurchased the Pledged Shares and in exchange issued the Notes and granted 1.6 million fully vested stock options with an exercise price equal to the face value of Notes plus interest. Incremental compensation expense of $1.0 million was recorded as stock-based compensation expense within the consolidated statements of operations and comprehensive income and was calculated as the difference between the Repurchase Price (defined as the face value of the Notes and the fair value of the stock options) and the fair value of the Pledged Shares. In year ended December&#160;31, 2020, all principal and interest due under the notes were prepaid. No principal or interest payments were paid during the year ended December&#160;31, 2021.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In connection with the Notes, the Company provided the officers with a right to sell to the Company outstanding shares of common stock upon settlement of the Notes (the &#x201c;Put Option&#x201d;). The officers could have only exercised the Put Option upon repayment of the Notes using the Pledged Shares or upon the prepayment of the Notes using proceeds from the officers&#x2019; sale or disposal of the Pledged Shares at a price less than the face value of the Notes. The Put Option allowed the officers to require the Company to repurchase any or all common stock held or beneficially owned to offset their tax liabilities resulting from the settlement of the Notes via one of the above methods. As the exercisability of the Put Option and therefore redemption of the common stock was outside the control of the Company then all common stock held or beneficially owned by the officers required temporary equity classification. The Company therefore classified $19.0 million of common stock outside of stockholders&#x2019; equity, which represented the fair value of the shares held or beneficially owned on the transaction date. The Company did not adjust the carrying value of the redeemable common stock during the year ended December&#160;31, 2019 since a redemption event was not probable. The Put Option expired unexercised upon the repayment of the Notes and during the Company&#x2019;s quarter ended September 30, 2020, the $19.0 million of redeemable common stock has been reclassified back to common stock.&lt;/span&gt;&lt;/div&gt;Stockholders&#x2019; Equity and Equity Incentive Plans&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Common Stock&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In connection with the IPO in December 2020, the Company&#x2019;s restated certificate of incorporation became effective, which authorized 1,000,000,000 shares of Class A common stock, 0.0001 par value per share, and 1,000,000,000 shares of Class B common stock, 0.0001 par value per share. The rights of the holders of Class A common stock and Class B common stock are identical, except with respect to voting and conversion rights. Holders of Class A common stock are entitled to one vote and holders of Class B common stock are entitled to ten votes and is convertible into one share of Class A common stock. Each share of Class B is convertible anytime at the option of the holder into one share of Class A common stock. Once converted or transferred and converted into Class A common stock, the Class B common stock will not be reissued.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Equity Incentive Plans&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Prior to the IPO, the Company maintained two equity incentive plans: the 2006 Stock Option Plan (the &#x201c;2006 Plan&#x201d;) and the 2017 Equity Incentive Plan. In February 2017, the Company adopted the 2017 Equity Incentive Plan (the &#x201c;2017 Plan&#x201d;) and all shares remaining unissued under the 2006 Stock Option Plan were assumed by the 2017 Plan. Upon completion of the IPO, the Company adopted the 2020 Equity Incentive Plan (&#x201c;2020 Plan&#x201d;), which serves as the successor to the 2017 Plan. Under the 2020 Plan, the Company may grant stock options, restricted stock awards, stock appreciation rights, restricted stock units (&#x201c;RSUs&#x201d;), deferred stock units (&#x201c;DSUs&#x201d;) performance awards, and stock bonus awards. As of December&#160;31, 2021, the Company has reserved 6,386,698 shares of Class A common stock for the issuance of awards under the 2020 Plan. These available shares will increase automatically on January 1 for each of the first ten calendar years during the term of the 2020 Plan by the number of shares equal to the lesser of five percent (5%) of the aggregate number of outstanding shares of all classes of the Company&#x2019;s common stock outstanding as of the immediately preceding December 31, or a number as may be determined by the Company&#x2019;s board of directors or compensation committee. To the extent outstanding awards under the 2017 Plan and the 2006 Plan are forfeited, lapse unexercised, or would otherwise have been returned to the share reserve under the Prior Plans, the shares of Class B common stock subject to such awards instead will be available for future issuance as Class A common stock under the 2020 Plan. No new awards were issued under the 2006 Plan or 2017 Plan after the effective date of the 2020 Plan.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Stock Options&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Stock options granted under the Company&#x2019;s stock incentive plans generally vest over four years, subject to the holder&#x2019;s continued service through the vesting date and expire no later than 10 years from the date of grant.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.5pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following summarizes stock option activity:&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:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:45.694%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.720%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.720%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.720%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.723%"/&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="21" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;Options Outstanding&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 #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;Number of Shares Underlying Outstanding Options&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;Weighted-Average Exercise Price&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;Weighted Average Remaining Contractual Term (Years)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;Aggregate Intrinsic Value (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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Outstanding &#x2014; December 31, 2020&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;8,459,969&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2.53&#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="3" style="background-color:#cceeff;border-top:1pt solid #000;padding: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:120%"&gt;6.83&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 #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;215,144&#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 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Options granted&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;660,466&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;36.74&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Options exercised&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:120%"&gt;(2,511,505)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2.16&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Options canceled&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;(66,419)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;6.38&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Options 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;0.26&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Outstanding &#x2014; December 31, 2021&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;6,542,351&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;6.08&#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="3" style="background-color:#ffffff;border-top:1pt solid #000;padding: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:120%"&gt;6.95&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 #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;184,727&#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 style="height:15pt"&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 #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:3pt double #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:3pt double #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:3pt double #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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Vested and exercisable &#x2014; December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;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:120%"&gt;4,341,907&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;3.56&#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 colspan="3" style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding: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:120%"&gt;6.17&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 #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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;132,770&#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-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The aggregate intrinsic value represents the difference between the exercise price of the options and the fair market value of our common stock on the date of exercise. The intrinsic value of options exercised was $80.7 million, $15.7 million and $0.1 million for the years ended December&#160;31, 2021, 2020 and 2019, respectively.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The weighted-average grant date fair value of options granted was $20.30, $4.96 and $1.65 for the years ended December&#160;31, 2021, 2020 and 2019, respectively. As of December&#160;31, 2021, unrecognized stock-based compensation of $17.0 million related to unvested stock options will be recognized on a straight-line basis over a weighted average period of 2.69 years. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.5pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Black-Scholes assumptions used to value the employee options at the grant dates are as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.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:54.829%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.162%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.162%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.165%"/&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="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;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="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Fair market value of common stock&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;$39.75-$54.07&lt;/span&gt;&lt;/div&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 #000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;$3.20-$17.00&lt;/span&gt;&lt;/div&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 #000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;$3.01-$3.18&lt;/span&gt;&lt;/div&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:10pt;font-weight:400;line-height:120%"&gt;Expected term (in years)&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;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;5.8-6.7&lt;/span&gt;&lt;/div&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:left;vertical-align:bottom"&gt;&lt;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;5.7-6.4&lt;/span&gt;&lt;/div&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:left;vertical-align:bottom"&gt;&lt;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;5.2-6.6&lt;/span&gt;&lt;/div&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Risk-free interest rate&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;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;0.6%-1.0%&lt;/span&gt;&lt;/div&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:left;vertical-align:bottom"&gt;&lt;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;0.3%-1.5%&lt;/span&gt;&lt;/div&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:left;vertical-align:bottom"&gt;&lt;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;1.4%-2.6%&lt;/span&gt;&lt;/div&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:10pt;font-weight:400;line-height:120%"&gt;Expected volatility&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;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;51%-54%&lt;/span&gt;&lt;/div&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:left;vertical-align:bottom"&gt;&lt;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;50%-55%&lt;/span&gt;&lt;/div&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:left;vertical-align:bottom"&gt;&lt;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;52%-54%&lt;/span&gt;&lt;/div&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Dividend rate&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#x2014;%&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#x2014;%&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#x2014;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.5pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Each of these inputs is subjective and generally requires significant judgment to determine. These assumptions and estimates were determined as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Fair Value of Common Stock - &lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Prior to the Company&#x2019;s IPO, the fair value was determined by the board of directors, with input from management and valuation reports prepared by third-party valuation specialists. After the Company&#x2019;s IPO, the fair value of each share of underlying common stock was based on the closing price of our Class A common stock as reported on the date of the grant.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Expected Term&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; - The expected term represents the period that the Company&#x2019;s stock-based awards are expected to be outstanding. For option grants that are considered to be &#x201c;plain vanilla,&#x201d; the Company determines the expected term using the simplified method. The simplified method deems the term to be the average of the time-to-vesting and the contractual life of the options. For other option grants, the Company estimates expected term using historical data on employee exercises and post-vesting employment termination behavior taking into account the contractual life of the award.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Risk-Free Interest Rate&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; - The risk-free interest rate is based on the U.S. Treasury yield curve in effect at the time of grant for zero-coupon U.S. Treasury notes with maturities approximately equal to the option&#x2019;s expected term.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Expected Volatility&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; - Since the Company has a short trading history of its common stock, the expected volatility is derived from the average historical stock volatilities of several unrelated public companies within the Company&#x2019;s industry that the Company considers to be comparable to its business over a period equivalent to the expected term of the stock option grants.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Dividend Rate&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; - The expected dividend is assumed to be zero as the Company has never paid dividends and has no current plans to do so.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Restricted Stock Units&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.5pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Restricted stock awards generally vest over four years, subject to the holder&#x2019;s continued service through the vesting date. A summary of RSU activity under the Company&#x2019;s equity incentive plan and related information is as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.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:52.906%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.803%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.803%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.806%"/&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="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;RSUs&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 #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;Number of Shares&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;Weighted-Average Grant Date Fair Value per Share&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;Aggregate Intrinsic Value (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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Unvested &#x2014; December 31, 2020&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#x2014;&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#x2014;&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#x2014;&#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 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Granted&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;582,259&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;35.24&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Vested&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:120%"&gt;(79,838)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;35.91&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Canceled/Forfeited&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;(19,119)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;32.69&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Unvested &#x2014; December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;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:120%"&gt;483,302&#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;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;35.23&#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;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;17,025&#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;&lt;div style="margin-bottom:9.5pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;As of December&#160;31, 2021, unrecognized stock-based compensation of $15.7 million related to unvested RSUs will be recognized on a straight-line basis over a weighted average period of 3.34 years. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;2020 Employee Stock Purchase Plan&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.5pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In November 2020, the Company&#x2019;s board of directors adopted, and its stockholders approved, the 2020 Employee Stock Purchase Plan (&#x201c;ESPP&#x201d;), which became effective in connection with the IPO. A total of 500,000 shares of the Company&#x2019;s Class A common stock were initially reserved for issuance under the ESPP.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.5pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The aggregate number of shares reserved for issuance under the ESPP will increase automatically on January 1st of each of the first ten calendar years during the term of the ESPP by the number of shares equal to the lesser of (a) 1% of the total outstanding shares of all classes of the Company&#x2019;s common stock as of the immediately preceding December 31 and (b) such number of shares of common stock as determined by the Company&#x2019;s board of directors. The aggregate number of shares issued over the term of the ESPP may not exceed 7,500,000 shares of Class A common stock. As of December&#160;31, 2021, the Company has reserved 713,475 shares of its common stock for issuance under the ESPP. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.5pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Under the ESPP, Class A common stock will be purchased for the accounts of employees participating in the ESPP on each purchase date at a price per share equal to 85% of the lesser of: (a) the fair market value on the offering date or (b) the fair market value on the purchase date. The ESPP provides for, at maximum,&#160;27&#160;month offering periods and&#160;each offering period may consist of one or more six-month purchase periods, beginning December 9, 2020 through May 31, 2022 with the purchase date on the last day of each purchase period. As of December&#160;31, 2021, $0.3 million has been withheld on behalf of employees for a future purchase under the ESPP due to the timing of payroll deductions and is included in accrued and other current liabilities. For the twelve months ended December 31, 2021, 276,406 shares of our Class A common stock have been purchased under the ESPP.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.5pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;As of December&#160;31, 2021, unrecognized stock-based compensation expense related to the ESPP was $1.4 million, which is expected to be recognized over a weighted-average period of 0.41 years.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.5pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We estimated the fair value of ESPP purchase rights on the date of the grant using a Black-Scholes option-pricing model with the following assumptions:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.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:85.117%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.683%"/&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:'Times New Roman',sans-serif;font-size:8pt;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="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2021&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Expected term (in years)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;0.4-1.4&lt;/span&gt;&lt;/div&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:10pt;font-weight:400;line-height:120%"&gt;Risk-free interest rate&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;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;0.1%&lt;/span&gt;&lt;/div&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Expected volatility&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;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;60%-76%&lt;/span&gt;&lt;/div&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:10pt;font-weight:400;line-height:120%"&gt;Dividend rate&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;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#x2014;%&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Expected Term&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; - The expected term of the ESPP represents the period of time that purchase rights are expected to be outstanding.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.5pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Risk-Free Interest Rate - &lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The risk-free interest rate for the expected term of the awards was based on the U.S. Treasury yield curve in effect at the time of the grant.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.5pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Expected Volatility&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; - Since the Company has a short trading history of its common stock, the expected volatility was estimated by taking the average historic price volatility of several unrelated public companies within the Company&#x2019;s industry that the Company considers to be comparable to its business over a period equivalent to the expected term of the awards.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.5pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Dividend rate &lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;- The Company has never declared or paid any cash dividends and does not presently plan to pay cash dividends in the foreseeable future. As a result, an expected dividend yield of zero percent was used.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Stock-Based Compensation&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The stock-based compensation expense by line item in the accompanying consolidated statements of operations is summarized as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.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:55.791%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.842%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.842%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.843%"/&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="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 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="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Cost of revenue&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;825&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;86&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;26&#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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Technology and development&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2,232&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;599&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;402&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Sales and marketing&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:120%"&gt;5,176&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;1,101&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;684&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;General and administrative&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;5,874&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;1,777&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;890&#160;&lt;/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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Total stock-based compensation&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;14,107&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;3,563&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2,002&#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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Tax benefit from stock-based 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;(1,825)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;(493)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;(181)&lt;/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 10pt;text-align:left;text-indent:-9pt;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Total stock-based compensation, net of tax effect&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;12,282&#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;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;3,070&#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;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;1,821&#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:StockholdersEquityNoteDisclosureTextBlock>
    <us-gaap:DebtInstrumentFaceAmount
      contextRef="i1d9f032c80424bb0b45ab5dbdc613c97_I20180831"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMjQvZnJhZzowMTBhMTA3NTdmMmY0ZWRkYjkzNTE5MDQ5Yjc2OTJjNC90ZXh0cmVnaW9uOjAxMGExMDc1N2YyZjRlZGRiOTM1MTkwNDliNzY5MmM0XzE3Mg_024e97e0-55e9-4ec0-9306-0471018c0c30"
      unitRef="usd">4000000</us-gaap:DebtInstrumentFaceAmount>
    <us-gaap:DebtInstrumentInterestRateStatedPercentage
      contextRef="i1d9f032c80424bb0b45ab5dbdc613c97_I20180831"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMjQvZnJhZzowMTBhMTA3NTdmMmY0ZWRkYjkzNTE5MDQ5Yjc2OTJjNC90ZXh0cmVnaW9uOjAxMGExMDc1N2YyZjRlZGRiOTM1MTkwNDliNzY5MmM0XzI3MA_7f53197b-8534-4d2c-a7b7-3441c45538d9"
      unitRef="number">0.0242</us-gaap:DebtInstrumentInterestRateStatedPercentage>
    <pubm:TemporaryEquityCommonStockSharesIssued
      contextRef="if218731f60614a379303b07c61dd75a7_I20180831"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMjQvZnJhZzowMTBhMTA3NTdmMmY0ZWRkYjkzNTE5MDQ5Yjc2OTJjNC90ZXh0cmVnaW9uOjAxMGExMDc1N2YyZjRlZGRiOTM1MTkwNDliNzY5MmM0XzQxNQ_91ff483b-bf89-45a7-a906-ddc89a7c7986"
      unitRef="shares">1600000</pubm:TemporaryEquityCommonStockSharesIssued>
    <pubm:TemporaryEquityCommonStockSharesIssued
      contextRef="if218731f60614a379303b07c61dd75a7_I20180831"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMjQvZnJhZzowMTBhMTA3NTdmMmY0ZWRkYjkzNTE5MDQ5Yjc2OTJjNC90ZXh0cmVnaW9uOjAxMGExMDc1N2YyZjRlZGRiOTM1MTkwNDliNzY5MmM0XzEyNDY_91ff483b-bf89-45a7-a906-ddc89a7c7986"
      unitRef="shares">1600000</pubm:TemporaryEquityCommonStockSharesIssued>
    <pubm:TemporaryEquityIncrementalExpense
      contextRef="ib8677d97bc8b4ef4bed42c3ef9d64a50_D20180801-20180831"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMjQvZnJhZzowMTBhMTA3NTdmMmY0ZWRkYjkzNTE5MDQ5Yjc2OTJjNC90ZXh0cmVnaW9uOjAxMGExMDc1N2YyZjRlZGRiOTM1MTkwNDliNzY5MmM0XzEzODM_986db0a3-a99e-4f1a-add1-4438da5dfb90"
      unitRef="usd">1000000</pubm:TemporaryEquityIncrementalExpense>
    <us-gaap:TemporaryEquityCarryingAmountAttributableToParent
      contextRef="ib4610e6e711f407ea37e1506e595433e_I20200930"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMjQvZnJhZzowMTBhMTA3NTdmMmY0ZWRkYjkzNTE5MDQ5Yjc2OTJjNC90ZXh0cmVnaW9uOjAxMGExMDc1N2YyZjRlZGRiOTM1MTkwNDliNzY5MmM0XzI5ODU_940c6741-b268-42aa-8842-ba1cdff59396"
      unitRef="usd">19000000</us-gaap:TemporaryEquityCarryingAmountAttributableToParent>
    <us-gaap:TemporaryEquityCarryingAmountAttributableToParent
      contextRef="ib4610e6e711f407ea37e1506e595433e_I20200930"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMjQvZnJhZzowMTBhMTA3NTdmMmY0ZWRkYjkzNTE5MDQ5Yjc2OTJjNC90ZXh0cmVnaW9uOjAxMGExMDc1N2YyZjRlZGRiOTM1MTkwNDliNzY5MmM0XzM0MTE_940c6741-b268-42aa-8842-ba1cdff59396"
      unitRef="usd">19000000</us-gaap:TemporaryEquityCarryingAmountAttributableToParent>
    <us-gaap:CommonStockSharesAuthorized
      contextRef="i633c4010f8de447c8d30d2eecf26be19_I20201211"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90ZXh0cmVnaW9uOmRhYWE5ZmE1ZDhiMzQzZmE5MzY1ZDJjYjg2NDRmMWU5XzkzNDU4NDg4NDkxMjk_372ae667-2369-4073-a56b-82466c5043d1"
      unitRef="shares">1000000000</us-gaap:CommonStockSharesAuthorized>
    <us-gaap:CommonStockParOrStatedValuePerShare
      contextRef="i633c4010f8de447c8d30d2eecf26be19_I20201211"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90ZXh0cmVnaW9uOmRhYWE5ZmE1ZDhiMzQzZmE5MzY1ZDJjYjg2NDRmMWU5Xzk4OTU2MDQ2NjMwMjU_ce1de4ff-f44a-4497-a40e-fe009b32e954"
      unitRef="usdPerShare">0.0001</us-gaap:CommonStockParOrStatedValuePerShare>
    <us-gaap:CommonStockSharesAuthorized
      contextRef="i768740fa8e9e45cb866898c76981f7d4_I20201211"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90ZXh0cmVnaW9uOmRhYWE5ZmE1ZDhiMzQzZmE5MzY1ZDJjYjg2NDRmMWU5Xzk4OTU2MDQ2NjMwNDE_1bd0a256-5258-4cac-86f0-c8b17c390083"
      unitRef="shares">1000000000</us-gaap:CommonStockSharesAuthorized>
    <us-gaap:CommonStockParOrStatedValuePerShare
      contextRef="i768740fa8e9e45cb866898c76981f7d4_I20201211"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90ZXh0cmVnaW9uOmRhYWE5ZmE1ZDhiMzQzZmE5MzY1ZDJjYjg2NDRmMWU5Xzk4OTU2MDQ2NjMwNDY_7e1fa301-40cb-404b-8657-37086b89afce"
      unitRef="usdPerShare">0.0001</us-gaap:CommonStockParOrStatedValuePerShare>
    <us-gaap:CommonStockCapitalSharesReservedForFutureIssuance
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90ZXh0cmVnaW9uOmRhYWE5ZmE1ZDhiMzQzZmE5MzY1ZDJjYjg2NDRmMWU5XzkzNDU4NDg4NTk1OTA_2d88fbc1-53b2-4f27-bdc6-be2fd3a8a319"
      unitRef="shares">6386698</us-gaap:CommonStockCapitalSharesReservedForFutureIssuance>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1
      contextRef="i35a1b87bd9de427c846029f06ee42bfd_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90ZXh0cmVnaW9uOmRhYWE5ZmE1ZDhiMzQzZmE5MzY1ZDJjYjg2NDRmMWU5XzEwOTk1MTE2NjI4MDc_ddeb20a7-7ed9-408b-b061-fe91b5b9ed46">P4Y</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1>
    <us-gaap:DisclosureOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90ZXh0cmVnaW9uOmRhYWE5ZmE1ZDhiMzQzZmE5MzY1ZDJjYjg2NDRmMWU5XzgyNDk_7751d7b9-bf59-4a88-ab0f-8e31f828c3a8">&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:45.694%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.720%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.720%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.720%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.723%"/&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="21" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;Options Outstanding&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 #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;Number of Shares Underlying Outstanding Options&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;Weighted-Average Exercise Price&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;Weighted Average Remaining Contractual Term (Years)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;Aggregate Intrinsic Value (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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Outstanding &#x2014; December 31, 2020&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;8,459,969&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2.53&#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="3" style="background-color:#cceeff;border-top:1pt solid #000;padding: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:120%"&gt;6.83&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 #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;215,144&#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 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Options granted&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;660,466&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;36.74&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Options exercised&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:120%"&gt;(2,511,505)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2.16&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Options canceled&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;(66,419)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;6.38&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Options 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;0.26&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Outstanding &#x2014; December 31, 2021&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;6,542,351&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;6.08&#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="3" style="background-color:#ffffff;border-top:1pt solid #000;padding: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:120%"&gt;6.95&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 #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;184,727&#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 style="height:15pt"&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 #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:3pt double #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:3pt double #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:3pt double #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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Vested and exercisable &#x2014; December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;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:120%"&gt;4,341,907&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;3.56&#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 colspan="3" style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding: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:120%"&gt;6.17&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 #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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;132,770&#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;A summary of RSU activity under the Company&#x2019;s equity incentive plan and related information is as follows:&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:52.906%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.803%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.803%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.806%"/&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="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;RSUs&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 #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;Number of Shares&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;Weighted-Average Grant Date Fair Value per Share&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;Aggregate Intrinsic Value (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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Unvested &#x2014; December 31, 2020&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#x2014;&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#x2014;&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#x2014;&#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 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Granted&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;582,259&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;35.24&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Vested&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:120%"&gt;(79,838)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;35.91&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Canceled/Forfeited&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;(19,119)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;32.69&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Unvested &#x2014; December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;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:120%"&gt;483,302&#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;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;35.23&#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;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;17,025&#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;</us-gaap:DisclosureOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTextBlock>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo3MTBjZjE4N2FiNGY0NDZiYjhiNTEzMjliNGY2OWNkYy90YWJsZXJhbmdlOjcxMGNmMTg3YWI0ZjQ0NmJiOGI1MTMyOWI0ZjY5Y2RjXzItMS0xLTEtMjgxMDU_9544a1da-ecc7-4c6a-b023-5c332593aad3"
      unitRef="shares">8459969</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo3MTBjZjE4N2FiNGY0NDZiYjhiNTEzMjliNGY2OWNkYy90YWJsZXJhbmdlOjcxMGNmMTg3YWI0ZjQ0NmJiOGI1MTMyOWI0ZjY5Y2RjXzItMy0xLTEtMjgxMDU_5980a405-4d3b-4479-9b40-535c28d5c1d3"
      unitRef="usdPerShare">2.53</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo3MTBjZjE4N2FiNGY0NDZiYjhiNTEzMjliNGY2OWNkYy90YWJsZXJhbmdlOjcxMGNmMTg3YWI0ZjQ0NmJiOGI1MTMyOWI0ZjY5Y2RjXzItNS0xLTEtMjgxMDU_e238d576-0a18-4dbd-9926-5f57d3f8fd69">P6Y9M29D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo3MTBjZjE4N2FiNGY0NDZiYjhiNTEzMjliNGY2OWNkYy90YWJsZXJhbmdlOjcxMGNmMTg3YWI0ZjQ0NmJiOGI1MTMyOWI0ZjY5Y2RjXzItNy0xLTEtMjgxMDU_29f70432-578f-4130-b13f-2e51ecba1165"
      unitRef="usd">215144000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo3MTBjZjE4N2FiNGY0NDZiYjhiNTEzMjliNGY2OWNkYy90YWJsZXJhbmdlOjcxMGNmMTg3YWI0ZjQ0NmJiOGI1MTMyOWI0ZjY5Y2RjXzMtMS0xLTEtMjgxMDU_5cae43d9-124b-4025-89ef-3b4bebd87c58"
      unitRef="shares">660466</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross>
    <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo3MTBjZjE4N2FiNGY0NDZiYjhiNTEzMjliNGY2OWNkYy90YWJsZXJhbmdlOjcxMGNmMTg3YWI0ZjQ0NmJiOGI1MTMyOWI0ZjY5Y2RjXzMtMy0xLTEtMjgxMDU_402a47a2-d54f-4bb9-a8c5-eb8fddba5ea1"
      unitRef="usdPerShare">36.74</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice>
    <us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo3MTBjZjE4N2FiNGY0NDZiYjhiNTEzMjliNGY2OWNkYy90YWJsZXJhbmdlOjcxMGNmMTg3YWI0ZjQ0NmJiOGI1MTMyOWI0ZjY5Y2RjXzQtMS0xLTEtMjgxMDU_15b1326d-c70f-4fb5-9334-d2d264dbbdef"
      unitRef="shares">2511505</us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised>
    <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo3MTBjZjE4N2FiNGY0NDZiYjhiNTEzMjliNGY2OWNkYy90YWJsZXJhbmdlOjcxMGNmMTg3YWI0ZjQ0NmJiOGI1MTMyOWI0ZjY5Y2RjXzQtMy0xLTEtMjgxMDU_f7388d44-5aad-4657-a814-9a9d26e9496d"
      unitRef="usdPerShare">2.16</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo3MTBjZjE4N2FiNGY0NDZiYjhiNTEzMjliNGY2OWNkYy90YWJsZXJhbmdlOjcxMGNmMTg3YWI0ZjQ0NmJiOGI1MTMyOWI0ZjY5Y2RjXzUtMS0xLTEtMjgxMDU_e5348113-c063-45b9-8bc1-ad67dbf790a1"
      unitRef="shares">66419</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod>
    <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo3MTBjZjE4N2FiNGY0NDZiYjhiNTEzMjliNGY2OWNkYy90YWJsZXJhbmdlOjcxMGNmMTg3YWI0ZjQ0NmJiOGI1MTMyOWI0ZjY5Y2RjXzUtMy0xLTEtMjgxMDU_8cdd6a23-9d34-443b-96af-cbd2d9e1abd0"
      unitRef="usdPerShare">6.38</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExpirationsInPeriod
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo3MTBjZjE4N2FiNGY0NDZiYjhiNTEzMjliNGY2OWNkYy90YWJsZXJhbmdlOjcxMGNmMTg3YWI0ZjQ0NmJiOGI1MTMyOWI0ZjY5Y2RjXzYtMS0xLTEtMjgxMDU_6d6709ae-6c39-4385-aa40-b4efc0776d73"
      unitRef="shares">160</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExpirationsInPeriod>
    <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExpirationsInPeriodWeightedAverageExercisePrice
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo3MTBjZjE4N2FiNGY0NDZiYjhiNTEzMjliNGY2OWNkYy90YWJsZXJhbmdlOjcxMGNmMTg3YWI0ZjQ0NmJiOGI1MTMyOWI0ZjY5Y2RjXzYtMy0xLTEtMjgxMDU_8f224677-38bf-4d19-9f1f-333d260d19e5"
      unitRef="usdPerShare">0.26</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExpirationsInPeriodWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo3MTBjZjE4N2FiNGY0NDZiYjhiNTEzMjliNGY2OWNkYy90YWJsZXJhbmdlOjcxMGNmMTg3YWI0ZjQ0NmJiOGI1MTMyOWI0ZjY5Y2RjXzctMS0xLTEtMjgxMDU_da4f17e4-4c30-444e-a223-433eee5a10b0"
      unitRef="shares">6542351</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo3MTBjZjE4N2FiNGY0NDZiYjhiNTEzMjliNGY2OWNkYy90YWJsZXJhbmdlOjcxMGNmMTg3YWI0ZjQ0NmJiOGI1MTMyOWI0ZjY5Y2RjXzctMy0xLTEtMjgxMDU_3acdf4fe-f80a-4383-b894-ddc10b024b46"
      unitRef="usdPerShare">6.08</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo3MTBjZjE4N2FiNGY0NDZiYjhiNTEzMjliNGY2OWNkYy90YWJsZXJhbmdlOjcxMGNmMTg3YWI0ZjQ0NmJiOGI1MTMyOWI0ZjY5Y2RjXzctNS0xLTEtMjgxMDU_eb129501-8f13-4879-9ea2-81fe089bc86a">P6Y11M12D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo3MTBjZjE4N2FiNGY0NDZiYjhiNTEzMjliNGY2OWNkYy90YWJsZXJhbmdlOjcxMGNmMTg3YWI0ZjQ0NmJiOGI1MTMyOWI0ZjY5Y2RjXzctNy0xLTEtMjgxMDU_3834588d-4893-4c83-ba01-b8e09b3c92dc"
      unitRef="usd">184727000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo3MTBjZjE4N2FiNGY0NDZiYjhiNTEzMjliNGY2OWNkYy90YWJsZXJhbmdlOjcxMGNmMTg3YWI0ZjQ0NmJiOGI1MTMyOWI0ZjY5Y2RjXzktMS0xLTEtMjgxMDU_0f558444-f2e2-41c4-a554-003ebd370bd9"
      unitRef="shares">4341907</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo3MTBjZjE4N2FiNGY0NDZiYjhiNTEzMjliNGY2OWNkYy90YWJsZXJhbmdlOjcxMGNmMTg3YWI0ZjQ0NmJiOGI1MTMyOWI0ZjY5Y2RjXzktMy0xLTEtMjgxMDU_81db2e61-0551-49fd-a8df-b3a9f18e20ec"
      unitRef="usdPerShare">3.56</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo3MTBjZjE4N2FiNGY0NDZiYjhiNTEzMjliNGY2OWNkYy90YWJsZXJhbmdlOjcxMGNmMTg3YWI0ZjQ0NmJiOGI1MTMyOWI0ZjY5Y2RjXzktNS0xLTEtMjgxMDU_cc5e3c0c-1148-470d-bd70-7653ded2922f">P6Y2M1D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo3MTBjZjE4N2FiNGY0NDZiYjhiNTEzMjliNGY2OWNkYy90YWJsZXJhbmdlOjcxMGNmMTg3YWI0ZjQ0NmJiOGI1MTMyOWI0ZjY5Y2RjXzktNy0xLTEtMjgxMDU_811cbf41-d3b5-4ed6-a4c1-49d2382e74b2"
      unitRef="usd">132770000</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90ZXh0cmVnaW9uOmRhYWE5ZmE1ZDhiMzQzZmE5MzY1ZDJjYjg2NDRmMWU5XzMwMDA_93bc0bbd-97fb-4c42-8a1e-7b7f7c284323"
      unitRef="usd">80700000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90ZXh0cmVnaW9uOmRhYWE5ZmE1ZDhiMzQzZmE5MzY1ZDJjYjg2NDRmMWU5Xzk4OTU2MDQ2NjQ0MDc_1ec63386-b983-49f3-bb94-88678bff73b4"
      unitRef="usd">15700000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90ZXh0cmVnaW9uOmRhYWE5ZmE1ZDhiMzQzZmE5MzY1ZDJjYjg2NDRmMWU5Xzk4OTU2MDQ2NjQ0MTQ_7893870a-37fa-4150-8b5f-fd2ec541c55e"
      unitRef="usd">100000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90ZXh0cmVnaW9uOmRhYWE5ZmE1ZDhiMzQzZmE5MzY1ZDJjYjg2NDRmMWU5XzMxMzc_85c594f1-826b-47b1-b4b6-32ade35c993d"
      unitRef="usdPerShare">20.30</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90ZXh0cmVnaW9uOmRhYWE5ZmE1ZDhiMzQzZmE5MzY1ZDJjYjg2NDRmMWU5Xzk4OTU2MDQ2NjQ0MjA_16056404-1d95-4991-bf6a-92475c0bb57b"
      unitRef="usdPerShare">4.96</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90ZXh0cmVnaW9uOmRhYWE5ZmE1ZDhiMzQzZmE5MzY1ZDJjYjg2NDRmMWU5XzMxNDE_d07cee38-de46-4041-a086-81152c769ea9"
      unitRef="usdPerShare">1.65</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions
      contextRef="ic9acf74eb8e548489f2a51697d6061d9_I20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90ZXh0cmVnaW9uOmRhYWE5ZmE1ZDhiMzQzZmE5MzY1ZDJjYjg2NDRmMWU5XzMyNTE_15afb56a-c35c-4031-a610-a6484115a872"
      unitRef="usd">17000000</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1
      contextRef="i35a1b87bd9de427c846029f06ee42bfd_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90ZXh0cmVnaW9uOmRhYWE5ZmE1ZDhiMzQzZmE5MzY1ZDJjYjg2NDRmMWU5Xzk4OTU2MDQ2NjQ0MzU_2390d0ed-41f7-4afb-b1ba-f81180cb410c">P2Y8M8D</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1>
    <us-gaap:ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90ZXh0cmVnaW9uOmRhYWE5ZmE1ZDhiMzQzZmE5MzY1ZDJjYjg2NDRmMWU5XzEwOTk1MTE2NjI3NzA_f600af3f-b4ca-4df8-9a56-e88e9ce96566">&lt;div style="margin-bottom:9.5pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Black-Scholes assumptions used to value the employee options at the grant dates are as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.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:54.829%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.162%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.162%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.165%"/&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="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;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="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Fair market value of common stock&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;$39.75-$54.07&lt;/span&gt;&lt;/div&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 #000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;$3.20-$17.00&lt;/span&gt;&lt;/div&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 #000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;$3.01-$3.18&lt;/span&gt;&lt;/div&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:10pt;font-weight:400;line-height:120%"&gt;Expected term (in years)&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;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;5.8-6.7&lt;/span&gt;&lt;/div&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:left;vertical-align:bottom"&gt;&lt;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;5.7-6.4&lt;/span&gt;&lt;/div&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:left;vertical-align:bottom"&gt;&lt;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;5.2-6.6&lt;/span&gt;&lt;/div&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Risk-free interest rate&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;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;0.6%-1.0%&lt;/span&gt;&lt;/div&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:left;vertical-align:bottom"&gt;&lt;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;0.3%-1.5%&lt;/span&gt;&lt;/div&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:left;vertical-align:bottom"&gt;&lt;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;1.4%-2.6%&lt;/span&gt;&lt;/div&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:10pt;font-weight:400;line-height:120%"&gt;Expected volatility&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;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;51%-54%&lt;/span&gt;&lt;/div&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:left;vertical-align:bottom"&gt;&lt;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;50%-55%&lt;/span&gt;&lt;/div&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:left;vertical-align:bottom"&gt;&lt;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;52%-54%&lt;/span&gt;&lt;/div&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Dividend rate&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#x2014;%&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#x2014;%&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#x2014;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;We estimated the fair value of ESPP purchase rights on the date of the grant using a Black-Scholes option-pricing model with the following assumptions:&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.117%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.683%"/&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:'Times New Roman',sans-serif;font-size:8pt;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="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2021&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Expected term (in years)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;0.4-1.4&lt;/span&gt;&lt;/div&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:10pt;font-weight:400;line-height:120%"&gt;Risk-free interest rate&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;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;0.1%&lt;/span&gt;&lt;/div&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Expected volatility&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;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;60%-76%&lt;/span&gt;&lt;/div&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:10pt;font-weight:400;line-height:120%"&gt;Dividend rate&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;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#x2014;%&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</us-gaap:ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExercisePrice
      contextRef="i3ff0590ef9ef4a3b91c6b2abfd262564_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo4NDcxYjI0NjYwZmU0NDU1YmY0ODM0Zjg2YzdmMzY0MS90YWJsZXJhbmdlOjg0NzFiMjQ2NjBmZTQ0NTViZjQ4MzRmODZjN2YzNjQxXzItMS0xLTEtMzgzNDIvdGV4dHJlZ2lvbjowNDlhMjlhNzk1OGI0MGViYmUzZDIwZDA3YTliMzY2OF8yNzQ4Nzc5MDY5NDYy_cd389eef-75c8-4653-adb8-1ca81219f077"
      unitRef="usdPerShare">39.75</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExercisePrice
      contextRef="ib468b00cf8b24a40a7421d89b33ebd2d_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo4NDcxYjI0NjYwZmU0NDU1YmY0ODM0Zjg2YzdmMzY0MS90YWJsZXJhbmdlOjg0NzFiMjQ2NjBmZTQ0NTViZjQ4MzRmODZjN2YzNjQxXzItMS0xLTEtMzgzNDIvdGV4dHJlZ2lvbjowNDlhMjlhNzk1OGI0MGViYmUzZDIwZDA3YTliMzY2OF8yNzQ4Nzc5MDY5NDU4_c5fc6164-bb50-4857-9087-254afb2ea51c"
      unitRef="usdPerShare">54.07</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExercisePrice
      contextRef="ie042b9543011413cb405365095639eef_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo4NDcxYjI0NjYwZmU0NDU1YmY0ODM0Zjg2YzdmMzY0MS90YWJsZXJhbmdlOjg0NzFiMjQ2NjBmZTQ0NTViZjQ4MzRmODZjN2YzNjQxXzItMy0xLTEtMzgzNDIvdGV4dHJlZ2lvbjplMTdlOTI3YmUyMWQ0YWNiYWQ3YWVkZDE4OGNkZTIyMV8yNzQ4Nzc5MDY5NDUw_1dc5a07a-905b-4875-844c-59aad8686c2c"
      unitRef="usdPerShare">3.20</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExercisePrice
      contextRef="i34755aab8f4f44a1b59362d35a9ef929_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo4NDcxYjI0NjYwZmU0NDU1YmY0ODM0Zjg2YzdmMzY0MS90YWJsZXJhbmdlOjg0NzFiMjQ2NjBmZTQ0NTViZjQ4MzRmODZjN2YzNjQxXzItMy0xLTEtMzgzNDIvdGV4dHJlZ2lvbjplMTdlOTI3YmUyMWQ0YWNiYWQ3YWVkZDE4OGNkZTIyMV8yNzQ4Nzc5MDY5NDU0_ca77d1b1-68c5-4032-8a42-007a56f01905"
      unitRef="usdPerShare">17.00</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExercisePrice
      contextRef="ib60a38e57015478f822f054e05dd0719_I20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo4NDcxYjI0NjYwZmU0NDU1YmY0ODM0Zjg2YzdmMzY0MS90YWJsZXJhbmdlOjg0NzFiMjQ2NjBmZTQ0NTViZjQ4MzRmODZjN2YzNjQxXzItNS0xLTEtMzgzNDIvdGV4dHJlZ2lvbjo0YjMxY2QzMmMzMTA0ODViYTVlYTM0MjIwY2FjYTI1NF85MzQ1ODQ4ODM2MTA4_5cbafaa8-621c-4313-8548-e7b93616a53a"
      unitRef="usdPerShare">3.01</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExercisePrice
      contextRef="iacc2aad7e09849ae9f2e0d89d77f8ab0_I20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo4NDcxYjI0NjYwZmU0NDU1YmY0ODM0Zjg2YzdmMzY0MS90YWJsZXJhbmdlOjg0NzFiMjQ2NjBmZTQ0NTViZjQ4MzRmODZjN2YzNjQxXzItNS0xLTEtMzgzNDIvdGV4dHJlZ2lvbjo0YjMxY2QzMmMzMTA0ODViYTVlYTM0MjIwY2FjYTI1NF85MzQ1ODQ4ODM2MTEy_b728af63-cd1a-4ce4-aa51-ac3846694325"
      unitRef="usdPerShare">3.18</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExercisePrice>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
      contextRef="i0b66cbf81e38465893de94b4135c1750_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo4NDcxYjI0NjYwZmU0NDU1YmY0ODM0Zjg2YzdmMzY0MS90YWJsZXJhbmdlOjg0NzFiMjQ2NjBmZTQ0NTViZjQ4MzRmODZjN2YzNjQxXzMtMS0xLTEtMzgzNDIvdGV4dHJlZ2lvbjo2ZGRjNDY5MmExNDU0ZDljYTA4MWY3Yzg4ZWQ2MmUzN18yNzQ4Nzc5MDY5NDUw_db5f585a-76f6-47aa-a81f-34566c3ff11e">P5Y9M18D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
      contextRef="ia51fa6a8ef654a7ab33c434839ac4672_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo4NDcxYjI0NjYwZmU0NDU1YmY0ODM0Zjg2YzdmMzY0MS90YWJsZXJhbmdlOjg0NzFiMjQ2NjBmZTQ0NTViZjQ4MzRmODZjN2YzNjQxXzMtMS0xLTEtMzgzNDIvdGV4dHJlZ2lvbjo2ZGRjNDY5MmExNDU0ZDljYTA4MWY3Yzg4ZWQ2MmUzN18yNzQ4Nzc5MDY5NDU2_20545cd1-dfc9-4093-8a1c-19d03e3c780c">P6Y8M12D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
      contextRef="ic26be68663fa4f76a84dfa4eb49f52a4_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo4NDcxYjI0NjYwZmU0NDU1YmY0ODM0Zjg2YzdmMzY0MS90YWJsZXJhbmdlOjg0NzFiMjQ2NjBmZTQ0NTViZjQ4MzRmODZjN2YzNjQxXzMtMy0xLTEtMzgzNDIvdGV4dHJlZ2lvbjowYjYxMWM4ZGY5Y2I0N2I1OTc5MDBkYjljMjg2NzUyOV8yNzQ4Nzc5MDY5NDUw_9debe65f-76e9-4dd6-a605-7199bfdcb247">P5Y8M12D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
      contextRef="i26e4b639031b4dc994f98b20eea06faa_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo4NDcxYjI0NjYwZmU0NDU1YmY0ODM0Zjg2YzdmMzY0MS90YWJsZXJhbmdlOjg0NzFiMjQ2NjBmZTQ0NTViZjQ4MzRmODZjN2YzNjQxXzMtMy0xLTEtMzgzNDIvdGV4dHJlZ2lvbjowYjYxMWM4ZGY5Y2I0N2I1OTc5MDBkYjljMjg2NzUyOV85MzQ1ODQ4ODM2MjIx_80a93be4-2cad-4c3d-8cd6-3ba3f35c0137">P6Y4M24D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
      contextRef="i69e5232373904681afe4be9e967362fc_D20190101-20191231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo4NDcxYjI0NjYwZmU0NDU1YmY0ODM0Zjg2YzdmMzY0MS90YWJsZXJhbmdlOjg0NzFiMjQ2NjBmZTQ0NTViZjQ4MzRmODZjN2YzNjQxXzMtNS0xLTEtMzgzNDIvdGV4dHJlZ2lvbjo1NDQ2MTI0ZmM1YzA0OTQ0ODdmMTE1NTFhNjI1NzlkY185MzQ1ODQ4ODM2MTEy_c77bbb9e-8ead-4408-a944-ea0e60e40162">P5Y2M12D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
      contextRef="ic47e9371f7d445cca5d30aab9d58dc6e_D20190101-20191231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo4NDcxYjI0NjYwZmU0NDU1YmY0ODM0Zjg2YzdmMzY0MS90YWJsZXJhbmdlOjg0NzFiMjQ2NjBmZTQ0NTViZjQ4MzRmODZjN2YzNjQxXzMtNS0xLTEtMzgzNDIvdGV4dHJlZ2lvbjo1NDQ2MTI0ZmM1YzA0OTQ0ODdmMTE1NTFhNjI1NzlkY185MzQ1ODQ4ODM2MTE4_660df99b-77d8-4245-8f04-05762a46152f">P6Y7M6D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="i0b66cbf81e38465893de94b4135c1750_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo4NDcxYjI0NjYwZmU0NDU1YmY0ODM0Zjg2YzdmMzY0MS90YWJsZXJhbmdlOjg0NzFiMjQ2NjBmZTQ0NTViZjQ4MzRmODZjN2YzNjQxXzQtMS0xLTEtMzgzNDIvdGV4dHJlZ2lvbjoxOTkzMzY0MzUxNWI0NTUwYWFmY2RlYmVmODRlYjk1M18yNzQ4Nzc5MDY5NDU0_cfea2536-6e85-4a29-a9ab-8c8840f4ffbb"
      unitRef="number">0.006</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="ia51fa6a8ef654a7ab33c434839ac4672_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo4NDcxYjI0NjYwZmU0NDU1YmY0ODM0Zjg2YzdmMzY0MS90YWJsZXJhbmdlOjg0NzFiMjQ2NjBmZTQ0NTViZjQ4MzRmODZjN2YzNjQxXzQtMS0xLTEtMzgzNDIvdGV4dHJlZ2lvbjoxOTkzMzY0MzUxNWI0NTUwYWFmY2RlYmVmODRlYjk1M18yNzQ4Nzc5MDY5NDU4_f76936f0-4d68-48e4-88ab-59ed95298cb2"
      unitRef="number">0.010</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="ic26be68663fa4f76a84dfa4eb49f52a4_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo4NDcxYjI0NjYwZmU0NDU1YmY0ODM0Zjg2YzdmMzY0MS90YWJsZXJhbmdlOjg0NzFiMjQ2NjBmZTQ0NTViZjQ4MzRmODZjN2YzNjQxXzQtMy0xLTEtMzgzNDIvdGV4dHJlZ2lvbjpjOGM1Mzg5MzMxYjc0OTc1YTcxNDU5Mjc2ZDQ4NTA4Yl8yNzQ4Nzc5MDY5NDU0_6819a88d-2892-414c-b946-a4c2a8c442a1"
      unitRef="number">0.003</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="i26e4b639031b4dc994f98b20eea06faa_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo4NDcxYjI0NjYwZmU0NDU1YmY0ODM0Zjg2YzdmMzY0MS90YWJsZXJhbmdlOjg0NzFiMjQ2NjBmZTQ0NTViZjQ4MzRmODZjN2YzNjQxXzQtMy0xLTEtMzgzNDIvdGV4dHJlZ2lvbjpjOGM1Mzg5MzMxYjc0OTc1YTcxNDU5Mjc2ZDQ4NTA4Yl8yNzQ4Nzc5MDY5NDU4_68acd751-2751-4c80-bb5e-cf45e0b4aecc"
      unitRef="number">0.015</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="i69e5232373904681afe4be9e967362fc_D20190101-20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo4NDcxYjI0NjYwZmU0NDU1YmY0ODM0Zjg2YzdmMzY0MS90YWJsZXJhbmdlOjg0NzFiMjQ2NjBmZTQ0NTViZjQ4MzRmODZjN2YzNjQxXzQtNS0xLTEtMzgzNDIvdGV4dHJlZ2lvbjo5ZWU5NTI3MWFjYzM0MzgxOTIyNzc5OGQ1MGMzMDY5NF85MzQ1ODQ4ODM2MTEw_da335e26-093e-4516-8d7d-edb62990701f"
      unitRef="number">0.014</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="ic47e9371f7d445cca5d30aab9d58dc6e_D20190101-20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo4NDcxYjI0NjYwZmU0NDU1YmY0ODM0Zjg2YzdmMzY0MS90YWJsZXJhbmdlOjg0NzFiMjQ2NjBmZTQ0NTViZjQ4MzRmODZjN2YzNjQxXzQtNS0xLTEtMzgzNDIvdGV4dHJlZ2lvbjo5ZWU5NTI3MWFjYzM0MzgxOTIyNzc5OGQ1MGMzMDY5NF85MzQ1ODQ4ODM2MTE0_7b57dfb6-25cc-45e5-92b9-3f1978c89e87"
      unitRef="number">0.026</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="i0b66cbf81e38465893de94b4135c1750_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo4NDcxYjI0NjYwZmU0NDU1YmY0ODM0Zjg2YzdmMzY0MS90YWJsZXJhbmdlOjg0NzFiMjQ2NjBmZTQ0NTViZjQ4MzRmODZjN2YzNjQxXzUtMS0xLTEtMzgzNDIvdGV4dHJlZ2lvbjphZTc1ZTIwNDQ0ODQ0MTBjODg5MDg2YzFhMjM2M2E1N18yNzQ4Nzc5MDY5NDUy_b4fe2616-a5a0-4525-a3c8-f61db14e33fa"
      unitRef="number">0.51</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="ia51fa6a8ef654a7ab33c434839ac4672_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo4NDcxYjI0NjYwZmU0NDU1YmY0ODM0Zjg2YzdmMzY0MS90YWJsZXJhbmdlOjg0NzFiMjQ2NjBmZTQ0NTViZjQ4MzRmODZjN2YzNjQxXzUtMS0xLTEtMzgzNDIvdGV4dHJlZ2lvbjphZTc1ZTIwNDQ0ODQ0MTBjODg5MDg2YzFhMjM2M2E1N18yNzQ4Nzc5MDY5NDU2_54e61584-dae8-488e-b30b-6aee22be8632"
      unitRef="number">0.54</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="ic26be68663fa4f76a84dfa4eb49f52a4_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo4NDcxYjI0NjYwZmU0NDU1YmY0ODM0Zjg2YzdmMzY0MS90YWJsZXJhbmdlOjg0NzFiMjQ2NjBmZTQ0NTViZjQ4MzRmODZjN2YzNjQxXzUtMy0xLTEtMzgzNDIvdGV4dHJlZ2lvbjozN2JhYWM1Zjg4YTk0OTRjOWEyZDBiNjIyZDRkNjU4MV85MzQ1ODQ4ODM2MTA2_7966cdaf-5a5c-496a-b270-e184429efa4e"
      unitRef="number">0.50</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="i26e4b639031b4dc994f98b20eea06faa_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo4NDcxYjI0NjYwZmU0NDU1YmY0ODM0Zjg2YzdmMzY0MS90YWJsZXJhbmdlOjg0NzFiMjQ2NjBmZTQ0NTViZjQ4MzRmODZjN2YzNjQxXzUtMy0xLTEtMzgzNDIvdGV4dHJlZ2lvbjozN2JhYWM1Zjg4YTk0OTRjOWEyZDBiNjIyZDRkNjU4MV85MzQ1ODQ4ODM2MTEw_d2e260d7-fe4f-4bfe-b242-6fb719a16702"
      unitRef="number">0.55</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="i69e5232373904681afe4be9e967362fc_D20190101-20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo4NDcxYjI0NjYwZmU0NDU1YmY0ODM0Zjg2YzdmMzY0MS90YWJsZXJhbmdlOjg0NzFiMjQ2NjBmZTQ0NTViZjQ4MzRmODZjN2YzNjQxXzUtNS0xLTEtMzgzNDIvdGV4dHJlZ2lvbjpmNTg3YzljYjJiOTc0MjcwYTVhMmIyYzk5ZTYwZTQyYl85MzQ1ODQ4ODM2MTA4_e82cda58-0858-4be5-b277-72e13979a85c"
      unitRef="number">0.52</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="ic47e9371f7d445cca5d30aab9d58dc6e_D20190101-20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo4NDcxYjI0NjYwZmU0NDU1YmY0ODM0Zjg2YzdmMzY0MS90YWJsZXJhbmdlOjg0NzFiMjQ2NjBmZTQ0NTViZjQ4MzRmODZjN2YzNjQxXzUtNS0xLTEtMzgzNDIvdGV4dHJlZ2lvbjpmNTg3YzljYjJiOTc0MjcwYTVhMmIyYzk5ZTYwZTQyYl85MzQ1ODQ4ODM2MTEy_68d98e6b-61cc-4062-b378-693413390811"
      unitRef="number">0.54</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo4NDcxYjI0NjYwZmU0NDU1YmY0ODM0Zjg2YzdmMzY0MS90YWJsZXJhbmdlOjg0NzFiMjQ2NjBmZTQ0NTViZjQ4MzRmODZjN2YzNjQxXzYtMS0xLTEtMzgzNDI_c06bed8c-b992-43bf-9937-930a7100870c"
      unitRef="number">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo4NDcxYjI0NjYwZmU0NDU1YmY0ODM0Zjg2YzdmMzY0MS90YWJsZXJhbmdlOjg0NzFiMjQ2NjBmZTQ0NTViZjQ4MzRmODZjN2YzNjQxXzYtMy0xLTEtMzgzNDI_34b21578-df83-4ba9-8c06-a7b749e75c58"
      unitRef="number">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo4NDcxYjI0NjYwZmU0NDU1YmY0ODM0Zjg2YzdmMzY0MS90YWJsZXJhbmdlOjg0NzFiMjQ2NjBmZTQ0NTViZjQ4MzRmODZjN2YzNjQxXzYtNS0xLTEtMzgzNDI_b8e759fe-9dd8-4eb7-a545-702d65e72e63"
      unitRef="number">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1
      contextRef="ieea9e46b28e94f03aed2c4c0c0457de2_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90ZXh0cmVnaW9uOmRhYWE5ZmE1ZDhiMzQzZmE5MzY1ZDJjYjg2NDRmMWU5XzEwOTk1MTE2NjI3ODc_07deebd1-8247-4bb2-9fec-c1d5cf8d9058">P4Y</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber
      contextRef="iffe4f59243cc494ab52af301a365a9e4_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo3OGZjZGI5ZTRlY2Q0MjQzODZhMGRhZDg2NGNjMGJmYy90YWJsZXJhbmdlOjc4ZmNkYjllNGVjZDQyNDM4NmEwZGFkODY0Y2MwYmZjXzItMS0xLTEtMzEwMzM_62683794-4941-40e5-8a71-089d3880ab62"
      unitRef="shares">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue
      contextRef="iffe4f59243cc494ab52af301a365a9e4_I20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo3OGZjZGI5ZTRlY2Q0MjQzODZhMGRhZDg2NGNjMGJmYy90YWJsZXJhbmdlOjc4ZmNkYjllNGVjZDQyNDM4NmEwZGFkODY0Y2MwYmZjXzItMy0xLTEtMzEwMzM_373b31bf-b80f-442d-95cd-aaf53208d335"
      unitRef="usdPerShare">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
      contextRef="ieea9e46b28e94f03aed2c4c0c0457de2_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo3OGZjZGI5ZTRlY2Q0MjQzODZhMGRhZDg2NGNjMGJmYy90YWJsZXJhbmdlOjc4ZmNkYjllNGVjZDQyNDM4NmEwZGFkODY0Y2MwYmZjXzMtMS0xLTEtMzEwMzM_50b03955-25c3-4d34-8a5c-4c982f154097"
      unitRef="shares">582259</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="ieea9e46b28e94f03aed2c4c0c0457de2_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo3OGZjZGI5ZTRlY2Q0MjQzODZhMGRhZDg2NGNjMGJmYy90YWJsZXJhbmdlOjc4ZmNkYjllNGVjZDQyNDM4NmEwZGFkODY0Y2MwYmZjXzMtMy0xLTEtMzEwMzM_ee61b8fc-1d24-4d6a-8bf4-985362a248cf"
      unitRef="usdPerShare">35.24</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod
      contextRef="ieea9e46b28e94f03aed2c4c0c0457de2_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo3OGZjZGI5ZTRlY2Q0MjQzODZhMGRhZDg2NGNjMGJmYy90YWJsZXJhbmdlOjc4ZmNkYjllNGVjZDQyNDM4NmEwZGFkODY0Y2MwYmZjXzQtMS0xLTEtMzEwMzM_c1458b5e-30d0-4b67-9ece-2a1e37abcb19"
      unitRef="shares">79838</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue
      contextRef="ieea9e46b28e94f03aed2c4c0c0457de2_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo3OGZjZGI5ZTRlY2Q0MjQzODZhMGRhZDg2NGNjMGJmYy90YWJsZXJhbmdlOjc4ZmNkYjllNGVjZDQyNDM4NmEwZGFkODY0Y2MwYmZjXzQtMy0xLTEtMzEwMzM_6f17bafc-0aef-4c3d-bccb-de2e800bc468"
      unitRef="usdPerShare">35.91</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod
      contextRef="ieea9e46b28e94f03aed2c4c0c0457de2_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo3OGZjZGI5ZTRlY2Q0MjQzODZhMGRhZDg2NGNjMGJmYy90YWJsZXJhbmdlOjc4ZmNkYjllNGVjZDQyNDM4NmEwZGFkODY0Y2MwYmZjXzUtMS0xLTEtMzEwMzM_d4179f0c-3616-4aeb-aa99-c6e39c62071c"
      unitRef="shares">19119</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue
      contextRef="ieea9e46b28e94f03aed2c4c0c0457de2_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo3OGZjZGI5ZTRlY2Q0MjQzODZhMGRhZDg2NGNjMGJmYy90YWJsZXJhbmdlOjc4ZmNkYjllNGVjZDQyNDM4NmEwZGFkODY0Y2MwYmZjXzUtMy0xLTEtMzEwMzM_f3a50fe1-6409-4e01-9cd5-b05ce873f85b"
      unitRef="usdPerShare">32.69</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber
      contextRef="i5a8f1a4a822d4961b5121cfe6d89ed62_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo3OGZjZGI5ZTRlY2Q0MjQzODZhMGRhZDg2NGNjMGJmYy90YWJsZXJhbmdlOjc4ZmNkYjllNGVjZDQyNDM4NmEwZGFkODY0Y2MwYmZjXzYtMS0xLTEtMzMwOTA_3b06747c-f027-43d4-b021-656beb188495"
      unitRef="shares">483302</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue
      contextRef="i5a8f1a4a822d4961b5121cfe6d89ed62_I20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo3OGZjZGI5ZTRlY2Q0MjQzODZhMGRhZDg2NGNjMGJmYy90YWJsZXJhbmdlOjc4ZmNkYjllNGVjZDQyNDM4NmEwZGFkODY0Y2MwYmZjXzYtMy0xLTEtMzEwMzM_1d142ec1-a093-4d02-960b-2683828b2a76"
      unitRef="usdPerShare">35.23</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsAggregateIntrinsicValueNonvested
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo3OGZjZGI5ZTRlY2Q0MjQzODZhMGRhZDg2NGNjMGJmYy90YWJsZXJhbmdlOjc4ZmNkYjllNGVjZDQyNDM4NmEwZGFkODY0Y2MwYmZjXzYtNS0xLTEtMzgyNzk_6c0810e7-2b73-4579-bf31-da6df771b161"
      unitRef="usd">17025000</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsAggregateIntrinsicValueNonvested>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions
      contextRef="i5a8f1a4a822d4961b5121cfe6d89ed62_I20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90ZXh0cmVnaW9uOmRhYWE5ZmE1ZDhiMzQzZmE5MzY1ZDJjYjg2NDRmMWU5Xzk4OTU2MDQ2Njg1MTk_48b8da5f-e4bb-4df7-aaae-5882dc09abd2"
      unitRef="usd">15700000</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1
      contextRef="ieea9e46b28e94f03aed2c4c0c0457de2_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90ZXh0cmVnaW9uOmRhYWE5ZmE1ZDhiMzQzZmE5MzY1ZDJjYjg2NDRmMWU5Xzk4OTU2MDQ2Njg1MjY_191f3d29-2cab-466c-b55c-2ed26e0657e7">P3Y4M2D</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1>
    <us-gaap:CommonStockCapitalSharesReservedForFutureIssuance
      contextRef="i47c5281d03a84e638a15953399427b1a_I20201130"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90ZXh0cmVnaW9uOmRhYWE5ZmE1ZDhiMzQzZmE5MzY1ZDJjYjg2NDRmMWU5XzEwOTk1MTE2NTEyNTM_5d221b4c-9bc1-4aad-b4b4-970878109288"
      unitRef="shares">500000</us-gaap:CommonStockCapitalSharesReservedForFutureIssuance>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorized
      contextRef="ibe7c988795e54ebc99d0d77658da4511_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90ZXh0cmVnaW9uOmRhYWE5ZmE1ZDhiMzQzZmE5MzY1ZDJjYjg2NDRmMWU5XzEwOTk1MTE2NTEyNDI_1131de36-7cce-4e7b-a3c8-a0612e2ccc01"
      unitRef="shares">7500000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorized>
    <us-gaap:CommonStockCapitalSharesReservedForFutureIssuance
      contextRef="id354deed4e6d411ea3d75ac85b10b9bc_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90ZXh0cmVnaW9uOmRhYWE5ZmE1ZDhiMzQzZmE5MzY1ZDJjYjg2NDRmMWU5Xzk4OTU2MDQ2Njg3OTI_dc524e47-8a63-489e-ad69-6ea9fc256f74"
      unitRef="shares">713475</us-gaap:CommonStockCapitalSharesReservedForFutureIssuance>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPricePurchaseDate
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90ZXh0cmVnaW9uOmRhYWE5ZmE1ZDhiMzQzZmE5MzY1ZDJjYjg2NDRmMWU5XzEwOTk1MTE2NTEyNjI_59d6d397-c0a4-4283-ac22-745e447ead3c"
      unitRef="number">0.85</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPricePurchaseDate>
    <pubm:ShareBasedCompensationArrangementByShareBasedPaymentAwardAmountWithheldForEmployeeStockPurchasePlan
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90ZXh0cmVnaW9uOmRhYWE5ZmE1ZDhiMzQzZmE5MzY1ZDJjYjg2NDRmMWU5Xzk4OTU2MDQ2Njg4MDA_28d748d6-8ac8-4ea3-ba85-97bf676b5d95"
      unitRef="usd">300000</pubm:ShareBasedCompensationArrangementByShareBasedPaymentAwardAmountWithheldForEmployeeStockPurchasePlan>
    <us-gaap:StockIssuedDuringPeriodSharesEmployeeStockPurchasePlans
      contextRef="i7516369d10994577bb5e9d71912decec_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90ZXh0cmVnaW9uOmRhYWE5ZmE1ZDhiMzQzZmE5MzY1ZDJjYjg2NDRmMWU5Xzk4OTU2MDQ2Njg4MDc_505ad24d-96e5-4381-9aa5-482d96e93f8b"
      unitRef="shares">276406</us-gaap:StockIssuedDuringPeriodSharesEmployeeStockPurchasePlans>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions
      contextRef="id354deed4e6d411ea3d75ac85b10b9bc_I20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90ZXh0cmVnaW9uOmRhYWE5ZmE1ZDhiMzQzZmE5MzY1ZDJjYjg2NDRmMWU5Xzk4OTU2MDQ2Njg4MTE_d90fe6d4-6f67-431f-9813-9db2c2ae9701"
      unitRef="usd">1400000</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1
      contextRef="i2a948743a6714d1c925a161361294e76_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90ZXh0cmVnaW9uOmRhYWE5ZmE1ZDhiMzQzZmE5MzY1ZDJjYjg2NDRmMWU5Xzk4OTU2MDQ2Njg4MTg_100ecef8-bf14-4a85-b03c-5c886b8fc28c">P0Y4M28D</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
      contextRef="i7cb0c2ef25cd44c8893ca84ca5547591_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo3MDBkOTFhMWI5NzI0YjU3YWY5NzBkMjk5NDg1ZjZkNS90YWJsZXJhbmdlOjcwMGQ5MWExYjk3MjRiNTdhZjk3MGQyOTk0ODVmNmQ1XzItMS0xLTEtMzgzOTQvdGV4dHJlZ2lvbjpmODk4NDE2ZDEyYWM0YjA4YTM4Y2VlMTAwZWYwNDEwY18yNzQ4Nzc5MDY5NDU1_87cff90f-1d3f-4b78-8ac8-8e6cd0c8f983">P0Y4M24D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
      contextRef="i737ee286bf8945b8ac391ae2f61da4d0_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo3MDBkOTFhMWI5NzI0YjU3YWY5NzBkMjk5NDg1ZjZkNS90YWJsZXJhbmdlOjcwMGQ5MWExYjk3MjRiNTdhZjk3MGQyOTk0ODVmNmQ1XzItMS0xLTEtMzgzOTQvdGV4dHJlZ2lvbjpmODk4NDE2ZDEyYWM0YjA4YTM4Y2VlMTAwZWYwNDEwY18yNzQ4Nzc5MDY5NDYw_6ace5d74-1483-456a-b829-f7bcdeb2115b">P1Y4M24D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="i8d7060f55e064e2881596922b6b9025a_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo3MDBkOTFhMWI5NzI0YjU3YWY5NzBkMjk5NDg1ZjZkNS90YWJsZXJhbmdlOjcwMGQ5MWExYjk3MjRiNTdhZjk3MGQyOTk0ODVmNmQ1XzMtMS0xLTEtMzgzOTQvdGV4dHJlZ2lvbjphMjRiYzRhNjM2OWY0ZDMwYmM4N2NmZWUxZTM5OGNjMV8yNzQ4Nzc5MDY5NDU0_94d13135-5c29-4bc7-b30c-c0d4beab0227"
      unitRef="number">0.001</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="i7cb0c2ef25cd44c8893ca84ca5547591_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo3MDBkOTFhMWI5NzI0YjU3YWY5NzBkMjk5NDg1ZjZkNS90YWJsZXJhbmdlOjcwMGQ5MWExYjk3MjRiNTdhZjk3MGQyOTk0ODVmNmQ1XzQtMS0xLTEtMzgzOTQvdGV4dHJlZ2lvbjpiM2E2MTRlZTAxNjE0MzVkOTQyZTZmMDBkZmUxNDc5Yl8yNzQ4Nzc5MDY5NDUw_d578dcf5-5c26-467d-bdd9-a173030cf11a"
      unitRef="number">0.60</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="i737ee286bf8945b8ac391ae2f61da4d0_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo3MDBkOTFhMWI5NzI0YjU3YWY5NzBkMjk5NDg1ZjZkNS90YWJsZXJhbmdlOjcwMGQ5MWExYjk3MjRiNTdhZjk3MGQyOTk0ODVmNmQ1XzQtMS0xLTEtMzgzOTQvdGV4dHJlZ2lvbjpiM2E2MTRlZTAxNjE0MzVkOTQyZTZmMDBkZmUxNDc5Yl8yNzQ4Nzc5MDY5NDU0_7663b17c-d55a-46fb-8196-24cdadb59009"
      unitRef="number">0.76</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate
      contextRef="i8d7060f55e064e2881596922b6b9025a_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTo3MDBkOTFhMWI5NzI0YjU3YWY5NzBkMjk5NDg1ZjZkNS90YWJsZXJhbmdlOjcwMGQ5MWExYjk3MjRiNTdhZjk3MGQyOTk0ODVmNmQ1XzUtMS0xLTEtMzgzOTQvdGV4dHJlZ2lvbjo5ZTVmY2I1MzQ3YzI0MmM2YmNjZGU0ZDQ2OTg0NzNhZV8yNzQ4Nzc5MDY5NDQ2_462d3587-1787-44b9-9eb3-488e9d806c84"
      unitRef="number">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate>
    <us-gaap:ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90ZXh0cmVnaW9uOmRhYWE5ZmE1ZDhiMzQzZmE5MzY1ZDJjYjg2NDRmMWU5XzEwOTk1MTE2NjI3NzE_67c204dd-b55c-468b-978a-eacd50149409">&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The stock-based compensation expense by line item in the accompanying consolidated statements of operations is summarized as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.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:55.791%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.842%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.842%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.843%"/&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="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 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="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Cost of revenue&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;825&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;86&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;26&#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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Technology and development&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2,232&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;599&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;402&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Sales and marketing&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:120%"&gt;5,176&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;1,101&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;684&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;General and administrative&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;5,874&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;1,777&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;890&#160;&lt;/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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Total stock-based compensation&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;14,107&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;3,563&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2,002&#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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Tax benefit from stock-based 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;(1,825)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;(493)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;(181)&lt;/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 10pt;text-align:left;text-indent:-9pt;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Total stock-based compensation, net of tax effect&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;12,282&#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;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;3,070&#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;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;1,821&#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:ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i21441d926ad94233ad4f780fd3ce9f11_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTpmYzhhODliZGEwMzk0MTJlOGFiMzM5ZjMzNDE2ZWEzNC90YWJsZXJhbmdlOmZjOGE4OWJkYTAzOTQxMmU4YWIzMzlmMzM0MTZlYTM0XzItMS0xLTEtMzgyODY_b9de33c5-b166-4f56-a93f-ea71ea3d6884"
      unitRef="usd">825000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="ib0d33444dd244058ac1f80208af39493_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTpmYzhhODliZGEwMzk0MTJlOGFiMzM5ZjMzNDE2ZWEzNC90YWJsZXJhbmdlOmZjOGE4OWJkYTAzOTQxMmU4YWIzMzlmMzM0MTZlYTM0XzItMy0xLTEtMzgyODY_20dd701b-aed1-44d4-a17c-34e4a5c2db2f"
      unitRef="usd">86000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="if0c82b86a7f04fbbb93d898360a45284_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTpmYzhhODliZGEwMzk0MTJlOGFiMzM5ZjMzNDE2ZWEzNC90YWJsZXJhbmdlOmZjOGE4OWJkYTAzOTQxMmU4YWIzMzlmMzM0MTZlYTM0XzItNS0xLTEtMzgyODY_c81f91c3-29b2-48e4-a4e7-75508b7c0995"
      unitRef="usd">26000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i19493e3eb60a411481917db58cc47b24_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTpmYzhhODliZGEwMzk0MTJlOGFiMzM5ZjMzNDE2ZWEzNC90YWJsZXJhbmdlOmZjOGE4OWJkYTAzOTQxMmU4YWIzMzlmMzM0MTZlYTM0XzMtMS0xLTEtMzgyODY_14824c67-2a73-45b6-bdb4-c110698a4978"
      unitRef="usd">2232000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="ib15f4438376d48f4b94880bccc189625_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTpmYzhhODliZGEwMzk0MTJlOGFiMzM5ZjMzNDE2ZWEzNC90YWJsZXJhbmdlOmZjOGE4OWJkYTAzOTQxMmU4YWIzMzlmMzM0MTZlYTM0XzMtMy0xLTEtMzgyODY_dcde2486-1754-44a7-b372-b036978d86f9"
      unitRef="usd">599000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i5c92439136b54f3a9f4b2575dfd79315_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTpmYzhhODliZGEwMzk0MTJlOGFiMzM5ZjMzNDE2ZWEzNC90YWJsZXJhbmdlOmZjOGE4OWJkYTAzOTQxMmU4YWIzMzlmMzM0MTZlYTM0XzMtNS0xLTEtMzgyODY_fe86fe29-c154-4b71-a8da-6b5d38863c43"
      unitRef="usd">402000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="ic29a3cc12a264df6862c7c04a5c04a4b_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTpmYzhhODliZGEwMzk0MTJlOGFiMzM5ZjMzNDE2ZWEzNC90YWJsZXJhbmdlOmZjOGE4OWJkYTAzOTQxMmU4YWIzMzlmMzM0MTZlYTM0XzQtMS0xLTEtMzgyODY_8345cf35-6a56-4611-9de4-3b8ff98327b5"
      unitRef="usd">5176000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i3871800729464bbfbc2ed620e016a6ce_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTpmYzhhODliZGEwMzk0MTJlOGFiMzM5ZjMzNDE2ZWEzNC90YWJsZXJhbmdlOmZjOGE4OWJkYTAzOTQxMmU4YWIzMzlmMzM0MTZlYTM0XzQtMy0xLTEtMzgyODY_9d56bfd0-c82a-4b97-810a-d6e694e3ffa4"
      unitRef="usd">1101000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i82416838b4a04907a8dd08046627ea5d_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTpmYzhhODliZGEwMzk0MTJlOGFiMzM5ZjMzNDE2ZWEzNC90YWJsZXJhbmdlOmZjOGE4OWJkYTAzOTQxMmU4YWIzMzlmMzM0MTZlYTM0XzQtNS0xLTEtMzgyODY_231c230b-7494-4eeb-adcd-74577c59803d"
      unitRef="usd">684000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="ifea4118697f2484aaee01b80548be496_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTpmYzhhODliZGEwMzk0MTJlOGFiMzM5ZjMzNDE2ZWEzNC90YWJsZXJhbmdlOmZjOGE4OWJkYTAzOTQxMmU4YWIzMzlmMzM0MTZlYTM0XzUtMS0xLTEtMzgyODY_34194e75-db19-4876-a4b8-1d4615b9b86c"
      unitRef="usd">5874000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i79e6023c06e0435b8ab85b7b9116b88e_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTpmYzhhODliZGEwMzk0MTJlOGFiMzM5ZjMzNDE2ZWEzNC90YWJsZXJhbmdlOmZjOGE4OWJkYTAzOTQxMmU4YWIzMzlmMzM0MTZlYTM0XzUtMy0xLTEtMzgyODY_9d2cb2c6-e1c1-4297-88e4-9e9e981a626b"
      unitRef="usd">1777000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i3a85840dceb9409d9e696313b4d39aa1_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTpmYzhhODliZGEwMzk0MTJlOGFiMzM5ZjMzNDE2ZWEzNC90YWJsZXJhbmdlOmZjOGE4OWJkYTAzOTQxMmU4YWIzMzlmMzM0MTZlYTM0XzUtNS0xLTEtMzgyODY_30dac689-8916-4cb2-b347-9f7f6276b9a8"
      unitRef="usd">890000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTpmYzhhODliZGEwMzk0MTJlOGFiMzM5ZjMzNDE2ZWEzNC90YWJsZXJhbmdlOmZjOGE4OWJkYTAzOTQxMmU4YWIzMzlmMzM0MTZlYTM0XzYtMS0xLTEtMzgyOTI_812abd1c-0ac2-49cb-a07e-b4e0019d12e9"
      unitRef="usd">14107000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTpmYzhhODliZGEwMzk0MTJlOGFiMzM5ZjMzNDE2ZWEzNC90YWJsZXJhbmdlOmZjOGE4OWJkYTAzOTQxMmU4YWIzMzlmMzM0MTZlYTM0XzYtMy0xLTEtMzgyOTI_fa2521d4-7237-477a-acfc-5b1972c68a2d"
      unitRef="usd">3563000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTpmYzhhODliZGEwMzk0MTJlOGFiMzM5ZjMzNDE2ZWEzNC90YWJsZXJhbmdlOmZjOGE4OWJkYTAzOTQxMmU4YWIzMzlmMzM0MTZlYTM0XzYtNS0xLTEtMzgyOTI_9f404d9d-bf06-4cf4-be24-ba8effc2f960"
      unitRef="usd">2002000</us-gaap:AllocatedShareBasedCompensationExpense>
    <pubm:ShareBasedPaymentArrangementTaxBenefit
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTpmYzhhODliZGEwMzk0MTJlOGFiMzM5ZjMzNDE2ZWEzNC90YWJsZXJhbmdlOmZjOGE4OWJkYTAzOTQxMmU4YWIzMzlmMzM0MTZlYTM0XzctMS0xLTEtMzgyODY_76f5c425-12a2-4d0a-b772-2147f3f219d5"
      unitRef="usd">1825000</pubm:ShareBasedPaymentArrangementTaxBenefit>
    <pubm:ShareBasedPaymentArrangementTaxBenefit
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTpmYzhhODliZGEwMzk0MTJlOGFiMzM5ZjMzNDE2ZWEzNC90YWJsZXJhbmdlOmZjOGE4OWJkYTAzOTQxMmU4YWIzMzlmMzM0MTZlYTM0XzctMy0xLTEtMzgyODY_5148984e-451e-4ded-87c8-078a099fd995"
      unitRef="usd">493000</pubm:ShareBasedPaymentArrangementTaxBenefit>
    <pubm:ShareBasedPaymentArrangementTaxBenefit
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTpmYzhhODliZGEwMzk0MTJlOGFiMzM5ZjMzNDE2ZWEzNC90YWJsZXJhbmdlOmZjOGE4OWJkYTAzOTQxMmU4YWIzMzlmMzM0MTZlYTM0XzctNS0xLTEtMzgyODY_5ceaaadb-7b75-4b54-9762-3c63a4d6fa13"
      unitRef="usd">181000</pubm:ShareBasedPaymentArrangementTaxBenefit>
    <pubm:ShareBasedPaymentArrangementExpenseNet
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTpmYzhhODliZGEwMzk0MTJlOGFiMzM5ZjMzNDE2ZWEzNC90YWJsZXJhbmdlOmZjOGE4OWJkYTAzOTQxMmU4YWIzMzlmMzM0MTZlYTM0XzgtMS0xLTEtMzgyOTI_b383ca82-0b7f-4d70-8b9e-af8880862042"
      unitRef="usd">12282000</pubm:ShareBasedPaymentArrangementExpenseNet>
    <pubm:ShareBasedPaymentArrangementExpenseNet
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTpmYzhhODliZGEwMzk0MTJlOGFiMzM5ZjMzNDE2ZWEzNC90YWJsZXJhbmdlOmZjOGE4OWJkYTAzOTQxMmU4YWIzMzlmMzM0MTZlYTM0XzgtMy0xLTEtMzgyOTI_3a85df31-581f-4b7b-a21f-8634364d7618"
      unitRef="usd">3070000</pubm:ShareBasedPaymentArrangementExpenseNet>
    <pubm:ShareBasedPaymentArrangementExpenseNet
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzAvZnJhZzpkYWFhOWZhNWQ4YjM0M2ZhOTM2NWQyY2I4NjQ0ZjFlOS90YWJsZTpmYzhhODliZGEwMzk0MTJlOGFiMzM5ZjMzNDE2ZWEzNC90YWJsZXJhbmdlOmZjOGE4OWJkYTAzOTQxMmU4YWIzMzlmMzM0MTZlYTM0XzgtNS0xLTEtMzgyOTI_6d2c4139-1986-458b-9310-7ed9b7155026"
      unitRef="usd">1821000</pubm:ShareBasedPaymentArrangementExpenseNet>
    <us-gaap:EarningsPerShareTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90ZXh0cmVnaW9uOjM1MDQ5MTAwNWYyNDQzN2Q4YTU3M2I2YzJhYTk3ZDc0XzQ5Mw_a1a4fd95-c072-4f40-902a-648c3475af66">Net Income Per Share Attributable to Common StockholdersThe Company has two classes of common stock, Class A and Class B. The rights, including the liquidation and dividend rights, of the holders of Class A and Class B common stock are identical, except with respect to voting. As the liquidation and dividend rights are identical, the undistributed earnings are allocated on a proportionate basis &lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;and the resulting net loss per share attributed to common stockholders will, therefore, be the same for both Class A and Class B common stock on an individual or combined basis.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table sets forth the computation of the Company&#x2019;s basic and diluted net income per share (in thousands, except share and per share data):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.5pt;text-indent:18pt"&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:55.791%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.842%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.842%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.843%"/&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="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;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="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;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="15" style="border-top:1pt solid #000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;div style="padding-left:3.37pt;padding-right:3.37pt;text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;(in thousands, except share and per share data)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Numerator:&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;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Net income&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:'Times New Roman',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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;56,604&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 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:'Times New Roman',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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;26,613&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 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:'Times New Roman',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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,643&#160;&lt;/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 34pt;text-align:left;text-indent:-9pt;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Less: Undistributed earnings allocated to participating 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;(20,187)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;(6,204)&lt;/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 46pt;text-align:left;text-indent:-9pt;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Net income attributable to common stockholders &#x2013; basic&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:'Times New Roman',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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;56,604&#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:'Times New Roman',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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,426&#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:'Times New Roman',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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;439&#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 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Denominator:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:3pt double #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:3pt double #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:3pt double #000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 34pt;text-align:left;text-indent:-9pt;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Weighted average common shares outstanding &#x2013; basic&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;50,184,455&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;12,642,293&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;10,036,983&#160;&lt;/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 46pt;text-align:left;text-indent:-9pt;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Net income per share attributable to common stockholders &#x2013; basic:&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:'Times New Roman',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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1.13&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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:'Times New Roman',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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;0.51&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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:'Times New Roman',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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;0.04&#160;&lt;/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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Numerator:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:3pt double #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:3pt double #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:3pt double #000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 40pt;text-align:left;text-indent:-9pt;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Net income attributable to common stockholders - diluted&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:'Times New Roman',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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;56,604&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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:'Times New Roman',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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;7,929&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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:'Times New Roman',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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;508&#160;&lt;/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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Denominator:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:3pt double #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:3pt double #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:3pt double #000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 40pt;text-align:left;text-indent:-9pt;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Weighted average shares outstanding &#x2013; basic&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;50,184,455&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;12,642,293&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;10,036,983&#160;&lt;/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 31pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Options to purchase common stock&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,353,779&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,483,589&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,119,796&#160;&lt;/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 31pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Restricted stock&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;29,662&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'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:'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;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 31pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Employee stock purchase plan shares&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;60,678&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'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:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'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:#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 31pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Warrants to purchase common stock&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:'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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;13,105&#160;&lt;/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 40pt;text-align:left;text-indent:-9pt;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Weighted average shares outstanding &#x2013; diluted&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;56,628,574&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;17,125,882&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;12,169,884&#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 2px 40pt;text-align:left;text-indent:-9pt;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Net income per share attributable to common stockholders &#x2013; diluted&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:3pt double #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:3pt double #000;padding:2px 0;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:120%"&gt;1.00&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:3pt double #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 #000;border-top:3pt double #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:3pt double #000;padding:2px 0;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:120%"&gt;0.46&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:3pt double #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 #000;border-top:3pt double #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:3pt double #000;padding:2px 0;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:120%"&gt;0.04&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:3pt double #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-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following weighted-average outstanding shares of common stock equivalents were excluded from the computation of diluted net income per share attributable to common stockholders for the periods presented because including them would have been anti-dilutive:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.5pt;text-indent:18pt"&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:55.951%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.842%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.842%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.683%"/&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="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;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="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&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:bottom"&gt;&lt;div style="padding-right:2.25pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Options to purchase common stock&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding: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;671,244&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 #000;padding: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;846,481&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 #000;padding: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;3,359,458&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;div style="padding-left:9pt;padding-right:2.25pt;text-indent:-9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Common stock issuable upon conversion of convertible preferred stock&lt;/span&gt;&lt;/div&gt;&lt;/td&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&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: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;&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: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;33,410,274&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;div style="padding-left:21pt;padding-right:2.25pt;text-indent:-9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total excludable from net income per share attributable to common stockholders &#x2013; diluted&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding: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;671,244&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-bottom:3pt double #000;border-top:1pt solid #000;padding: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;846,481&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-bottom:3pt double #000;border-top:1pt solid #000;padding: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;36,769,732&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:EarningsPerShareTextBlock>
    <us-gaap:ScheduleOfEarningsPerShareBasicByCommonClassTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90ZXh0cmVnaW9uOjM1MDQ5MTAwNWYyNDQzN2Q4YTU3M2I2YzJhYTk3ZDc0XzQ5NA_17bba54e-d9d0-48ef-9128-285a579b4eb7">The Company has two classes of common stock, Class A and Class B. The rights, including the liquidation and dividend rights, of the holders of Class A and Class B common stock are identical, except with respect to voting. As the liquidation and dividend rights are identical, the undistributed earnings are allocated on a proportionate basis &lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;and the resulting net loss per share attributed to common stockholders will, therefore, be the same for both Class A and Class B common stock on an individual or combined basis.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table sets forth the computation of the Company&#x2019;s basic and diluted net income per share (in thousands, except share and per share data):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.5pt;text-indent:18pt"&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:55.791%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.842%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.842%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.843%"/&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="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;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="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;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="15" style="border-top:1pt solid #000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;div style="padding-left:3.37pt;padding-right:3.37pt;text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;(in thousands, except share and per share data)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Numerator:&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;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Net income&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:'Times New Roman',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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;56,604&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 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:'Times New Roman',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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;26,613&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 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:'Times New Roman',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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,643&#160;&lt;/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 34pt;text-align:left;text-indent:-9pt;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Less: Undistributed earnings allocated to participating 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;(20,187)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;(6,204)&lt;/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 46pt;text-align:left;text-indent:-9pt;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Net income attributable to common stockholders &#x2013; basic&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:'Times New Roman',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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;56,604&#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:'Times New Roman',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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,426&#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:'Times New Roman',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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;439&#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 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Denominator:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:3pt double #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:3pt double #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:3pt double #000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 34pt;text-align:left;text-indent:-9pt;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Weighted average common shares outstanding &#x2013; basic&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;50,184,455&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;12,642,293&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;10,036,983&#160;&lt;/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 46pt;text-align:left;text-indent:-9pt;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Net income per share attributable to common stockholders &#x2013; basic:&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:'Times New Roman',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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1.13&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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:'Times New Roman',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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;0.51&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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:'Times New Roman',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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;0.04&#160;&lt;/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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Numerator:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:3pt double #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:3pt double #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:3pt double #000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 40pt;text-align:left;text-indent:-9pt;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Net income attributable to common stockholders - diluted&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:'Times New Roman',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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;56,604&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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:'Times New Roman',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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;7,929&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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:'Times New Roman',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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;508&#160;&lt;/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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Denominator:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:3pt double #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:3pt double #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:3pt double #000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 40pt;text-align:left;text-indent:-9pt;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Weighted average shares outstanding &#x2013; basic&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;50,184,455&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;12,642,293&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;10,036,983&#160;&lt;/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 31pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Options to purchase common stock&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,353,779&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,483,589&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,119,796&#160;&lt;/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 31pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Restricted stock&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;29,662&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'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:'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;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 31pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Employee stock purchase plan shares&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;60,678&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'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:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'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:#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 31pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Warrants to purchase common stock&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:'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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;13,105&#160;&lt;/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 40pt;text-align:left;text-indent:-9pt;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Weighted average shares outstanding &#x2013; diluted&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;56,628,574&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;17,125,882&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;12,169,884&#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 2px 40pt;text-align:left;text-indent:-9pt;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Net income per share attributable to common stockholders &#x2013; diluted&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:3pt double #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:3pt double #000;padding:2px 0;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:120%"&gt;1.00&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:3pt double #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 #000;border-top:3pt double #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:3pt double #000;padding:2px 0;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:120%"&gt;0.46&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:3pt double #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 #000;border-top:3pt double #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:3pt double #000;padding:2px 0;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:120%"&gt;0.04&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:3pt double #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfEarningsPerShareBasicByCommonClassTextBlock>
    <us-gaap:ScheduleOfEarningsPerShareDilutedByCommonClassTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90ZXh0cmVnaW9uOjM1MDQ5MTAwNWYyNDQzN2Q4YTU3M2I2YzJhYTk3ZDc0XzQ5NA_358c03a4-a634-4205-a565-e9287756ad25">The Company has two classes of common stock, Class A and Class B. The rights, including the liquidation and dividend rights, of the holders of Class A and Class B common stock are identical, except with respect to voting. As the liquidation and dividend rights are identical, the undistributed earnings are allocated on a proportionate basis &lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;and the resulting net loss per share attributed to common stockholders will, therefore, be the same for both Class A and Class B common stock on an individual or combined basis.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table sets forth the computation of the Company&#x2019;s basic and diluted net income per share (in thousands, except share and per share data):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.5pt;text-indent:18pt"&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:55.791%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.842%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.842%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.843%"/&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="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;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="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;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="15" style="border-top:1pt solid #000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;div style="padding-left:3.37pt;padding-right:3.37pt;text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;(in thousands, except share and per share data)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Numerator:&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;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Net income&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:'Times New Roman',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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;56,604&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 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:'Times New Roman',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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;26,613&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 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:'Times New Roman',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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,643&#160;&lt;/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 34pt;text-align:left;text-indent:-9pt;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Less: Undistributed earnings allocated to participating 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;(20,187)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;(6,204)&lt;/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 46pt;text-align:left;text-indent:-9pt;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Net income attributable to common stockholders &#x2013; basic&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:'Times New Roman',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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;56,604&#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:'Times New Roman',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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,426&#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:'Times New Roman',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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;439&#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 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Denominator:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:3pt double #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:3pt double #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:3pt double #000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 34pt;text-align:left;text-indent:-9pt;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Weighted average common shares outstanding &#x2013; basic&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;50,184,455&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;12,642,293&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;10,036,983&#160;&lt;/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 46pt;text-align:left;text-indent:-9pt;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Net income per share attributable to common stockholders &#x2013; basic:&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:'Times New Roman',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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1.13&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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:'Times New Roman',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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;0.51&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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:'Times New Roman',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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;0.04&#160;&lt;/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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Numerator:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:3pt double #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:3pt double #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:3pt double #000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 40pt;text-align:left;text-indent:-9pt;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Net income attributable to common stockholders - diluted&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:'Times New Roman',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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;56,604&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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:'Times New Roman',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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;7,929&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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:'Times New Roman',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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;508&#160;&lt;/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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Denominator:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:3pt double #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:3pt double #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:3pt double #000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 40pt;text-align:left;text-indent:-9pt;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Weighted average shares outstanding &#x2013; basic&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;50,184,455&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;12,642,293&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;10,036,983&#160;&lt;/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 31pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Options to purchase common stock&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,353,779&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,483,589&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,119,796&#160;&lt;/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 31pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Restricted stock&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;29,662&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'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:'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;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 31pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Employee stock purchase plan shares&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;60,678&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'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:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'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:#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 31pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Warrants to purchase common stock&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:'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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;13,105&#160;&lt;/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 40pt;text-align:left;text-indent:-9pt;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Weighted average shares outstanding &#x2013; diluted&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;56,628,574&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;17,125,882&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;12,169,884&#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 2px 40pt;text-align:left;text-indent:-9pt;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Net income per share attributable to common stockholders &#x2013; diluted&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:3pt double #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:3pt double #000;padding:2px 0;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:120%"&gt;1.00&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:3pt double #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 #000;border-top:3pt double #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:3pt double #000;padding:2px 0;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:120%"&gt;0.46&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:3pt double #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 #000;border-top:3pt double #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:3pt double #000;padding:2px 0;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:120%"&gt;0.04&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:3pt double #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfEarningsPerShareDilutedByCommonClassTextBlock>
    <us-gaap:NetIncomeLoss
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90YWJsZTowZTAyNzY2MDE1YTQ0OGYxYTcxNzVlNjE1YWJhYzUxYy90YWJsZXJhbmdlOjBlMDI3NjYwMTVhNDQ4ZjFhNzE3NWU2MTVhYmFjNTFjXzYtMi0xLTEtMjgxMDU_3fb4cfa5-fcea-4bf8-81d2-110c3043b7f3"
      unitRef="usd">56604000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90YWJsZTowZTAyNzY2MDE1YTQ0OGYxYTcxNzVlNjE1YWJhYzUxYy90YWJsZXJhbmdlOjBlMDI3NjYwMTVhNDQ4ZjFhNzE3NWU2MTVhYmFjNTFjXzYtNS0xLTEtMjgxMDU_8f7d3588-ce83-489e-bf3f-91e22053e52c"
      unitRef="usd">26613000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90YWJsZTowZTAyNzY2MDE1YTQ0OGYxYTcxNzVlNjE1YWJhYzUxYy90YWJsZXJhbmdlOjBlMDI3NjYwMTVhNDQ4ZjFhNzE3NWU2MTVhYmFjNTFjXzYtOC0xLTEtMjgxMDU_40591c2d-6e72-461f-9b4c-de6f4b9b8ce1"
      unitRef="usd">6643000</us-gaap:NetIncomeLoss>
    <us-gaap:UndistributedEarningsLossAllocatedToParticipatingSecuritiesBasic
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90YWJsZTowZTAyNzY2MDE1YTQ0OGYxYTcxNzVlNjE1YWJhYzUxYy90YWJsZXJhbmdlOjBlMDI3NjYwMTVhNDQ4ZjFhNzE3NWU2MTVhYmFjNTFjXzctMi0xLTEtMjgxMDU_b0421f6b-3a4f-4f77-a6db-e9073e213edf"
      unitRef="usd">0</us-gaap:UndistributedEarningsLossAllocatedToParticipatingSecuritiesBasic>
    <us-gaap:UndistributedEarningsLossAllocatedToParticipatingSecuritiesBasic
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90YWJsZTowZTAyNzY2MDE1YTQ0OGYxYTcxNzVlNjE1YWJhYzUxYy90YWJsZXJhbmdlOjBlMDI3NjYwMTVhNDQ4ZjFhNzE3NWU2MTVhYmFjNTFjXzctNS0xLTEtMjgxMDU_5cd11456-a56f-4a42-8c81-3b6727583920"
      unitRef="usd">20187000</us-gaap:UndistributedEarningsLossAllocatedToParticipatingSecuritiesBasic>
    <us-gaap:UndistributedEarningsLossAllocatedToParticipatingSecuritiesBasic
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90YWJsZTowZTAyNzY2MDE1YTQ0OGYxYTcxNzVlNjE1YWJhYzUxYy90YWJsZXJhbmdlOjBlMDI3NjYwMTVhNDQ4ZjFhNzE3NWU2MTVhYmFjNTFjXzctOC0xLTEtMjgxMDU_bbef28bc-97ef-4271-b363-342b6ab64baa"
      unitRef="usd">6204000</us-gaap:UndistributedEarningsLossAllocatedToParticipatingSecuritiesBasic>
    <us-gaap:NetIncomeLossAvailableToCommonStockholdersBasic
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90YWJsZTowZTAyNzY2MDE1YTQ0OGYxYTcxNzVlNjE1YWJhYzUxYy90YWJsZXJhbmdlOjBlMDI3NjYwMTVhNDQ4ZjFhNzE3NWU2MTVhYmFjNTFjXzktMi0xLTEtMjgxMDU_88657776-1972-40ce-8083-06b709501155"
      unitRef="usd">56604000</us-gaap:NetIncomeLossAvailableToCommonStockholdersBasic>
    <us-gaap:NetIncomeLossAvailableToCommonStockholdersBasic
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90YWJsZTowZTAyNzY2MDE1YTQ0OGYxYTcxNzVlNjE1YWJhYzUxYy90YWJsZXJhbmdlOjBlMDI3NjYwMTVhNDQ4ZjFhNzE3NWU2MTVhYmFjNTFjXzktNS0xLTEtMjgxMDU_65ce64c7-75cd-4df7-90bb-c2f0eb8f71db"
      unitRef="usd">6426000</us-gaap:NetIncomeLossAvailableToCommonStockholdersBasic>
    <us-gaap:NetIncomeLossAvailableToCommonStockholdersBasic
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90YWJsZTowZTAyNzY2MDE1YTQ0OGYxYTcxNzVlNjE1YWJhYzUxYy90YWJsZXJhbmdlOjBlMDI3NjYwMTVhNDQ4ZjFhNzE3NWU2MTVhYmFjNTFjXzktOC0xLTEtMjgxMDU_b587b58e-1c65-451b-9453-39fa7172e4fe"
      unitRef="usd">439000</us-gaap:NetIncomeLossAvailableToCommonStockholdersBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90YWJsZTowZTAyNzY2MDE1YTQ0OGYxYTcxNzVlNjE1YWJhYzUxYy90YWJsZXJhbmdlOjBlMDI3NjYwMTVhNDQ4ZjFhNzE3NWU2MTVhYmFjNTFjXzExLTItMS0xLTI4MTA1_7f6b5c66-4e5e-4676-9895-ab7102c8dac1"
      unitRef="shares">50184455</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90YWJsZTowZTAyNzY2MDE1YTQ0OGYxYTcxNzVlNjE1YWJhYzUxYy90YWJsZXJhbmdlOjBlMDI3NjYwMTVhNDQ4ZjFhNzE3NWU2MTVhYmFjNTFjXzExLTUtMS0xLTI4MTA1_497f2501-8d87-4e68-8a0e-91dad725eb4d"
      unitRef="shares">12642293</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90YWJsZTowZTAyNzY2MDE1YTQ0OGYxYTcxNzVlNjE1YWJhYzUxYy90YWJsZXJhbmdlOjBlMDI3NjYwMTVhNDQ4ZjFhNzE3NWU2MTVhYmFjNTFjXzExLTgtMS0xLTI4MTA1_500b57e2-74c4-4b77-a16a-31ec07112da7"
      unitRef="shares">10036983</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90YWJsZTowZTAyNzY2MDE1YTQ0OGYxYTcxNzVlNjE1YWJhYzUxYy90YWJsZXJhbmdlOjBlMDI3NjYwMTVhNDQ4ZjFhNzE3NWU2MTVhYmFjNTFjXzEyLTItMS0xLTI4MTA1_59c0fc93-f30e-400b-82c5-6c4bf6924c73"
      unitRef="usdPerShare">1.13</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90YWJsZTowZTAyNzY2MDE1YTQ0OGYxYTcxNzVlNjE1YWJhYzUxYy90YWJsZXJhbmdlOjBlMDI3NjYwMTVhNDQ4ZjFhNzE3NWU2MTVhYmFjNTFjXzEyLTUtMS0xLTI4MTA1_de8ef57a-bbc3-42fb-8d98-07e20d94ecb3"
      unitRef="usdPerShare">0.51</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90YWJsZTowZTAyNzY2MDE1YTQ0OGYxYTcxNzVlNjE1YWJhYzUxYy90YWJsZXJhbmdlOjBlMDI3NjYwMTVhNDQ4ZjFhNzE3NWU2MTVhYmFjNTFjXzEyLTgtMS0xLTI4MTA1_a8d9e189-edca-4aff-a8ab-6e8a5a3365d3"
      unitRef="usdPerShare">0.04</us-gaap:EarningsPerShareBasic>
    <us-gaap:NetIncomeLossAvailableToCommonStockholdersDiluted
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90YWJsZTowZTAyNzY2MDE1YTQ0OGYxYTcxNzVlNjE1YWJhYzUxYy90YWJsZXJhbmdlOjBlMDI3NjYwMTVhNDQ4ZjFhNzE3NWU2MTVhYmFjNTFjXzE0LTItMS0xLTI4MTA1_1f270a81-594a-4da8-8cb0-5626311ea450"
      unitRef="usd">56604000</us-gaap:NetIncomeLossAvailableToCommonStockholdersDiluted>
    <us-gaap:NetIncomeLossAvailableToCommonStockholdersDiluted
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90YWJsZTowZTAyNzY2MDE1YTQ0OGYxYTcxNzVlNjE1YWJhYzUxYy90YWJsZXJhbmdlOjBlMDI3NjYwMTVhNDQ4ZjFhNzE3NWU2MTVhYmFjNTFjXzE0LTUtMS0xLTI4MTA1_11a0ba19-52d7-4e1d-a04b-27dd775eac34"
      unitRef="usd">7929000</us-gaap:NetIncomeLossAvailableToCommonStockholdersDiluted>
    <us-gaap:NetIncomeLossAvailableToCommonStockholdersDiluted
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90YWJsZTowZTAyNzY2MDE1YTQ0OGYxYTcxNzVlNjE1YWJhYzUxYy90YWJsZXJhbmdlOjBlMDI3NjYwMTVhNDQ4ZjFhNzE3NWU2MTVhYmFjNTFjXzE0LTgtMS0xLTI4MTA1_d6c2269a-66ee-4cdb-a85f-56ff08c6fb62"
      unitRef="usd">508000</us-gaap:NetIncomeLossAvailableToCommonStockholdersDiluted>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90YWJsZTowZTAyNzY2MDE1YTQ0OGYxYTcxNzVlNjE1YWJhYzUxYy90YWJsZXJhbmdlOjBlMDI3NjYwMTVhNDQ4ZjFhNzE3NWU2MTVhYmFjNTFjXzE2LTItMS0xLTI4MTA1_333f2dc6-7b20-42f8-bff6-c10e00b6eb52"
      unitRef="shares">50184455</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90YWJsZTowZTAyNzY2MDE1YTQ0OGYxYTcxNzVlNjE1YWJhYzUxYy90YWJsZXJhbmdlOjBlMDI3NjYwMTVhNDQ4ZjFhNzE3NWU2MTVhYmFjNTFjXzE2LTUtMS0xLTI4MTA1_aa7b3a28-8c01-42f4-9c91-1b52e63b856f"
      unitRef="shares">12642293</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90YWJsZTowZTAyNzY2MDE1YTQ0OGYxYTcxNzVlNjE1YWJhYzUxYy90YWJsZXJhbmdlOjBlMDI3NjYwMTVhNDQ4ZjFhNzE3NWU2MTVhYmFjNTFjXzE2LTgtMS0xLTI4MTA1_15108463-1621-460c-b813-d281de5edac9"
      unitRef="shares">10036983</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <pubm:IncrementalCommonSharesAttributableToDilutiveEffectOfCallOptions
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90YWJsZTowZTAyNzY2MDE1YTQ0OGYxYTcxNzVlNjE1YWJhYzUxYy90YWJsZXJhbmdlOjBlMDI3NjYwMTVhNDQ4ZjFhNzE3NWU2MTVhYmFjNTFjXzE3LTItMS0xLTI4MTA1_474b98d8-eb77-4a38-8c84-3633496aa972"
      unitRef="shares">6353779</pubm:IncrementalCommonSharesAttributableToDilutiveEffectOfCallOptions>
    <pubm:IncrementalCommonSharesAttributableToDilutiveEffectOfCallOptions
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90YWJsZTowZTAyNzY2MDE1YTQ0OGYxYTcxNzVlNjE1YWJhYzUxYy90YWJsZXJhbmdlOjBlMDI3NjYwMTVhNDQ4ZjFhNzE3NWU2MTVhYmFjNTFjXzE3LTUtMS0xLTI4MTA1_9c6541e2-a1a6-4a65-9974-440216b642be"
      unitRef="shares">4483589</pubm:IncrementalCommonSharesAttributableToDilutiveEffectOfCallOptions>
    <pubm:IncrementalCommonSharesAttributableToDilutiveEffectOfCallOptions
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90YWJsZTowZTAyNzY2MDE1YTQ0OGYxYTcxNzVlNjE1YWJhYzUxYy90YWJsZXJhbmdlOjBlMDI3NjYwMTVhNDQ4ZjFhNzE3NWU2MTVhYmFjNTFjXzE3LTgtMS0xLTI4MTA1_f2f46cf2-c05b-4d4b-9cbd-c0ed9173c835"
      unitRef="shares">2119796</pubm:IncrementalCommonSharesAttributableToDilutiveEffectOfCallOptions>
    <pubm:IncrementalCommonSharesAttributableToRestrictedStock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90YWJsZTowZTAyNzY2MDE1YTQ0OGYxYTcxNzVlNjE1YWJhYzUxYy90YWJsZXJhbmdlOjBlMDI3NjYwMTVhNDQ4ZjFhNzE3NWU2MTVhYmFjNTFjXzE1LTEtMS0xLTM2NTQ5_1ecd74cd-fb0b-4834-be6c-654fa06d9a1e"
      unitRef="shares">29662</pubm:IncrementalCommonSharesAttributableToRestrictedStock>
    <pubm:IncrementalCommonSharesAttributableToRestrictedStock
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90YWJsZTowZTAyNzY2MDE1YTQ0OGYxYTcxNzVlNjE1YWJhYzUxYy90YWJsZXJhbmdlOjBlMDI3NjYwMTVhNDQ4ZjFhNzE3NWU2MTVhYmFjNTFjXzE1LTMtMS0xLTM4OTMw_51b6bc95-d994-4a6b-9a87-2403c56eb1a5"
      unitRef="shares">0</pubm:IncrementalCommonSharesAttributableToRestrictedStock>
    <pubm:IncrementalCommonSharesAttributableToRestrictedStock
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90YWJsZTowZTAyNzY2MDE1YTQ0OGYxYTcxNzVlNjE1YWJhYzUxYy90YWJsZXJhbmdlOjBlMDI3NjYwMTVhNDQ4ZjFhNzE3NWU2MTVhYmFjNTFjXzE1LTUtMS0xLTM4OTMz_c52615a6-6e64-4841-91c0-dfe2a1313f16"
      unitRef="shares">0</pubm:IncrementalCommonSharesAttributableToRestrictedStock>
    <pubm:IncrementalCommonSharesAttributableToEmployeeStockPurchasePlanShares
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90YWJsZTowZTAyNzY2MDE1YTQ0OGYxYTcxNzVlNjE1YWJhYzUxYy90YWJsZXJhbmdlOjBlMDI3NjYwMTVhNDQ4ZjFhNzE3NWU2MTVhYmFjNTFjXzE2LTEtMS0xLTM2NTQ5_b6299edb-4323-4b2f-99c9-902273187a58"
      unitRef="shares">60678</pubm:IncrementalCommonSharesAttributableToEmployeeStockPurchasePlanShares>
    <pubm:IncrementalCommonSharesAttributableToEmployeeStockPurchasePlanShares
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90YWJsZTowZTAyNzY2MDE1YTQ0OGYxYTcxNzVlNjE1YWJhYzUxYy90YWJsZXJhbmdlOjBlMDI3NjYwMTVhNDQ4ZjFhNzE3NWU2MTVhYmFjNTFjXzE2LTMtMS0xLTM4OTM1_3e2a3d6d-bab1-4b26-8665-b2f9188f648c"
      unitRef="shares">0</pubm:IncrementalCommonSharesAttributableToEmployeeStockPurchasePlanShares>
    <pubm:IncrementalCommonSharesAttributableToEmployeeStockPurchasePlanShares
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90YWJsZTowZTAyNzY2MDE1YTQ0OGYxYTcxNzVlNjE1YWJhYzUxYy90YWJsZXJhbmdlOjBlMDI3NjYwMTVhNDQ4ZjFhNzE3NWU2MTVhYmFjNTFjXzE2LTUtMS0xLTM4OTM4_75d2dd9b-4acf-40df-bd85-b5de998c1f75"
      unitRef="shares">0</pubm:IncrementalCommonSharesAttributableToEmployeeStockPurchasePlanShares>
    <pubm:IncrementalCommonSharesAttributableToDilutiveEffectOfWarrants
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90YWJsZTowZTAyNzY2MDE1YTQ0OGYxYTcxNzVlNjE1YWJhYzUxYy90YWJsZXJhbmdlOjBlMDI3NjYwMTVhNDQ4ZjFhNzE3NWU2MTVhYmFjNTFjXzE4LTItMS0xLTI4MTA1_1f95974a-63d5-41c9-ae9e-e8803d845783"
      unitRef="shares">0</pubm:IncrementalCommonSharesAttributableToDilutiveEffectOfWarrants>
    <pubm:IncrementalCommonSharesAttributableToDilutiveEffectOfWarrants
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90YWJsZTowZTAyNzY2MDE1YTQ0OGYxYTcxNzVlNjE1YWJhYzUxYy90YWJsZXJhbmdlOjBlMDI3NjYwMTVhNDQ4ZjFhNzE3NWU2MTVhYmFjNTFjXzE4LTUtMS0xLTI4MTA1_54eafb73-bfe3-4339-9eb2-ac28ded9e64d"
      unitRef="shares">0</pubm:IncrementalCommonSharesAttributableToDilutiveEffectOfWarrants>
    <pubm:IncrementalCommonSharesAttributableToDilutiveEffectOfWarrants
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90YWJsZTowZTAyNzY2MDE1YTQ0OGYxYTcxNzVlNjE1YWJhYzUxYy90YWJsZXJhbmdlOjBlMDI3NjYwMTVhNDQ4ZjFhNzE3NWU2MTVhYmFjNTFjXzE4LTgtMS0xLTI4MTA1_a7bbbd79-4638-4a69-b8b3-fa2d9559b922"
      unitRef="shares">13105</pubm:IncrementalCommonSharesAttributableToDilutiveEffectOfWarrants>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90YWJsZTowZTAyNzY2MDE1YTQ0OGYxYTcxNzVlNjE1YWJhYzUxYy90YWJsZXJhbmdlOjBlMDI3NjYwMTVhNDQ4ZjFhNzE3NWU2MTVhYmFjNTFjXzE5LTItMS0xLTI4MTA1_68a1c74a-edd7-45cd-8791-ded8144857dc"
      unitRef="shares">56628574</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90YWJsZTowZTAyNzY2MDE1YTQ0OGYxYTcxNzVlNjE1YWJhYzUxYy90YWJsZXJhbmdlOjBlMDI3NjYwMTVhNDQ4ZjFhNzE3NWU2MTVhYmFjNTFjXzE5LTUtMS0xLTI4MTA1_d20aefca-e9dc-4680-a3d8-bc08b8493727"
      unitRef="shares">17125882</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90YWJsZTowZTAyNzY2MDE1YTQ0OGYxYTcxNzVlNjE1YWJhYzUxYy90YWJsZXJhbmdlOjBlMDI3NjYwMTVhNDQ4ZjFhNzE3NWU2MTVhYmFjNTFjXzE5LTgtMS0xLTI4MTA1_80ab2655-5a7e-4f43-b4b5-e26fc42f1902"
      unitRef="shares">12169884</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:EarningsPerShareDiluted
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90YWJsZTowZTAyNzY2MDE1YTQ0OGYxYTcxNzVlNjE1YWJhYzUxYy90YWJsZXJhbmdlOjBlMDI3NjYwMTVhNDQ4ZjFhNzE3NWU2MTVhYmFjNTFjXzIwLTItMS0xLTI4MTA1_ba4949d3-7c01-4b78-92cd-5775493cf713"
      unitRef="usdPerShare">1.00</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90YWJsZTowZTAyNzY2MDE1YTQ0OGYxYTcxNzVlNjE1YWJhYzUxYy90YWJsZXJhbmdlOjBlMDI3NjYwMTVhNDQ4ZjFhNzE3NWU2MTVhYmFjNTFjXzIwLTUtMS0xLTI4MTA1_a678021a-01ac-4c61-9b16-d249bdcea68b"
      unitRef="usdPerShare">0.46</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90YWJsZTowZTAyNzY2MDE1YTQ0OGYxYTcxNzVlNjE1YWJhYzUxYy90YWJsZXJhbmdlOjBlMDI3NjYwMTVhNDQ4ZjFhNzE3NWU2MTVhYmFjNTFjXzIwLTgtMS0xLTI4MTA1_b1bab5f0-5a07-486b-8298-082c7c23d1e0"
      unitRef="usdPerShare">0.04</us-gaap:EarningsPerShareDiluted>
    <us-gaap:ScheduleOfAntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90ZXh0cmVnaW9uOjM1MDQ5MTAwNWYyNDQzN2Q4YTU3M2I2YzJhYTk3ZDc0XzQ5Mg_2d3f9c3d-b2a4-4ec0-9305-12a3a2b684eb">&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following weighted-average outstanding shares of common stock equivalents were excluded from the computation of diluted net income per share attributable to common stockholders for the periods presented because including them would have been anti-dilutive:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.5pt;text-indent:18pt"&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:55.951%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.842%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.842%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.683%"/&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="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;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="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&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:bottom"&gt;&lt;div style="padding-right:2.25pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Options to purchase common stock&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding: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;671,244&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 #000;padding: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;846,481&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 #000;padding: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;3,359,458&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;div style="padding-left:9pt;padding-right:2.25pt;text-indent:-9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Common stock issuable upon conversion of convertible preferred stock&lt;/span&gt;&lt;/div&gt;&lt;/td&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&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: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;&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: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;33,410,274&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;div style="padding-left:21pt;padding-right:2.25pt;text-indent:-9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total excludable from net income per share attributable to common stockholders &#x2013; diluted&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding: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;671,244&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-bottom:3pt double #000;border-top:1pt solid #000;padding: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;846,481&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-bottom:3pt double #000;border-top:1pt solid #000;padding: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;36,769,732&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfAntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareTextBlock>
    <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
      contextRef="ibb4f974f21b8450ca0899aa56aac0a0b_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90YWJsZToxZjNhNWRmN2E4ZjM0MzRiOWM5ZGUzMjc0M2U2YjdjNy90YWJsZXJhbmdlOjFmM2E1ZGY3YThmMzQzNGI5YzlkZTMyNzQzZTZiN2M3XzMtMi0xLTEtMjgxMDU_49c43988-7f85-44ac-931a-53b9e98bb9ec"
      unitRef="shares">671244</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
    <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
      contextRef="i1311cc55079347d6b7db3c9be8aba165_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90YWJsZToxZjNhNWRmN2E4ZjM0MzRiOWM5ZGUzMjc0M2U2YjdjNy90YWJsZXJhbmdlOjFmM2E1ZGY3YThmMzQzNGI5YzlkZTMyNzQzZTZiN2M3XzMtNS0xLTEtMjgxMDU_7ad4847d-b414-459b-b9b7-72fe9e5ee323"
      unitRef="shares">846481</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
    <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
      contextRef="ibeeda28b82544d77b42fdd9bd9235b2c_D20190101-20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90YWJsZToxZjNhNWRmN2E4ZjM0MzRiOWM5ZGUzMjc0M2U2YjdjNy90YWJsZXJhbmdlOjFmM2E1ZGY3YThmMzQzNGI5YzlkZTMyNzQzZTZiN2M3XzMtOC0xLTEtMjgxMDU_0241f5d3-eaca-4888-8be1-b4d751398069"
      unitRef="shares">3359458</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
    <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
      contextRef="i7007b5e81e864d2297262baf52f92e83_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90YWJsZToxZjNhNWRmN2E4ZjM0MzRiOWM5ZGUzMjc0M2U2YjdjNy90YWJsZXJhbmdlOjFmM2E1ZGY3YThmMzQzNGI5YzlkZTMyNzQzZTZiN2M3XzQtMi0xLTEtMjgxMDU_9c458d12-76d7-4578-bfb2-663eac9f4bab"
      unitRef="shares">0</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
    <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
      contextRef="i81b57a065a16438b9c5e306c0f8ba67d_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90YWJsZToxZjNhNWRmN2E4ZjM0MzRiOWM5ZGUzMjc0M2U2YjdjNy90YWJsZXJhbmdlOjFmM2E1ZGY3YThmMzQzNGI5YzlkZTMyNzQzZTZiN2M3XzQtNS0xLTEtMjgxMDU_a7d63d26-585c-41a4-8df0-dfc0aec110ab"
      unitRef="shares">0</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
    <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
      contextRef="i3a5c13c4c9254335b625198ed45b0931_D20190101-20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90YWJsZToxZjNhNWRmN2E4ZjM0MzRiOWM5ZGUzMjc0M2U2YjdjNy90YWJsZXJhbmdlOjFmM2E1ZGY3YThmMzQzNGI5YzlkZTMyNzQzZTZiN2M3XzQtOC0xLTEtMjgxMDU_b16441cb-ed52-4343-bcba-e8977122801a"
      unitRef="shares">33410274</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
    <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90YWJsZToxZjNhNWRmN2E4ZjM0MzRiOWM5ZGUzMjc0M2U2YjdjNy90YWJsZXJhbmdlOjFmM2E1ZGY3YThmMzQzNGI5YzlkZTMyNzQzZTZiN2M3XzYtMi0xLTEtMjgxMDU_995def59-4ad7-45ae-9471-cc80c8a8b290"
      unitRef="shares">671244</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
    <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90YWJsZToxZjNhNWRmN2E4ZjM0MzRiOWM5ZGUzMjc0M2U2YjdjNy90YWJsZXJhbmdlOjFmM2E1ZGY3YThmMzQzNGI5YzlkZTMyNzQzZTZiN2M3XzYtNS0xLTEtMjgxMDU_8cdabdae-6f17-46f8-8c1f-c28d4f5bf27c"
      unitRef="shares">846481</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
    <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzMvZnJhZzozNTA0OTEwMDVmMjQ0MzdkOGE1NzNiNmMyYWE5N2Q3NC90YWJsZToxZjNhNWRmN2E4ZjM0MzRiOWM5ZGUzMjc0M2U2YjdjNy90YWJsZXJhbmdlOjFmM2E1ZGY3YThmMzQzNGI5YzlkZTMyNzQzZTZiN2M3XzYtOC0xLTEtMjgxMDU_7d6c3631-e9ed-4622-bda4-e18d6c5fcafb"
      unitRef="shares">36769732</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
    <us-gaap:IncomeTaxDisclosureTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90ZXh0cmVnaW9uOmIxYjQ5OWNhZmMzYjRlNDFiMjFkZGU0YTY1NzNhY2VlXzQ2NzU_9e4580b8-a1c8-4635-8663-0aa55191ba52">Income Taxes &lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table presents domestic and foreign components of income (loss) before income taxes for the periods presented (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.5pt;text-indent:18pt"&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:55.791%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.842%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.842%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.843%"/&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="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 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="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Domestic&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;61,822&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;28,169&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;6,995&#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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;International&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2,981&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;3,411&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2,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;/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:10pt;font-weight:400;line-height:120%"&gt;Income before provision for income taxes&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;64,803&#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;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;31,580&#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;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;9,222&#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;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The income tax (benefit) provision is composed of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.5pt;text-indent:18pt"&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:55.791%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.842%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.842%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.843%"/&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="15" style="padding:2px 1pt;text-align:center;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 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="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;Current provisions for income taxes:&lt;/span&gt;&lt;/td&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;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 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;2,437&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;360&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;1,639&#160;&lt;/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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;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 colspan="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:9pt;font-weight:400;line-height:120%"&gt;240&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;58&#160;&lt;/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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;295&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;1,434&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;689&#160;&lt;/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 25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;Total current tax expense&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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;3,446&#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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;2,034&#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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;2,386&#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 style="height:15pt"&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;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;Deferred tax expense:&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;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;4,513&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;1,845&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;254&#160;&lt;/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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;251&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;1,170&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;4&#160;&lt;/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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;(11)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;(82)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;(65)&lt;/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 25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;Total deferred tax expense&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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;4,753&#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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;2,933&#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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;193&#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 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;Total provision for income taxes&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 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;8,199&#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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;4,967&#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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;2,579&#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-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table presents a reconciliation of the statutory federal rate and the Company&#x2019;s effective tax rate for the periods presented:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.5pt;text-indent:18pt"&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:55.791%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.842%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.842%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.843%"/&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="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 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="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Statutory federal income tax rate&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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;21.00&#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;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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 #000;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:9pt;font-weight:400;line-height:100%"&gt;21.00&#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;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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 #000;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:9pt;font-weight:400;line-height:100%"&gt;21.00&#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;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;State after-tax rate&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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1.49&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4.47&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.67&#160;&lt;/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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(10.38)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(6.79)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5.48&#160;&lt;/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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Research 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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(1.37)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(2.04)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(2.85)&lt;/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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Transfer pricing reserve&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:9pt;font-weight:400;line-height:100%"&gt;(1.26)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1.32&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(0.68)&lt;/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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Foreign rate differential&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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.73&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.61&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2.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;/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:9pt;font-weight:400;line-height:100%"&gt;Foreign derived intangible income&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:9pt;font-weight:400;line-height:100%"&gt;(0.48)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(3.26)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(7.89)&lt;/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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Section 162(m) limitation&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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2.49&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:9pt;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:'Times New Roman',sans-serif;font-size:9pt;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:'Times New Roman',sans-serif;font-size:9pt;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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.42&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.42&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;9.86&#160;&lt;/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-bottom:3pt double #000;border-top:1pt solid #000;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:9pt;font-weight:400;line-height:100%"&gt;12.64&#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;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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-bottom:3pt double #000;border-top:1pt solid #000;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:9pt;font-weight:400;line-height:100%"&gt;15.73&#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;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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-bottom:3pt double #000;border-top:1pt solid #000;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:9pt;font-weight:400;line-height:100%"&gt;27.96&#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;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Deferred income taxes reflect the net tax effects of temporary differences between carrying amounts of assets and liabilities for financial reporting purposes and the amounts used for income tax purposes. The following table presents the significant components of the Company&#x2019;s deferred tax assets and liabilities for the periods presented (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:18pt"&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:55.791%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.842%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.842%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.843%"/&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="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 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="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Deferred tax assets:&lt;/span&gt;&lt;/td&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;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 2px 13pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Net operating loss carryforwards&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;56&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;124&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;194&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Accruals and allowances&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,104&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;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 colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;614&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;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 colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;784&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Tax credits&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,396&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,631&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,064&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Stock-based compensation&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,171&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;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 colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,045&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;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 colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,749&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Intangibles 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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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:top"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,106&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,202&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Lease obligation&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5,226&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;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 colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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:top"/&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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:top"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;808&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,101&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;967&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&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;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 2px 13pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Valuation allowance&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(1,396)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(1,372)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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:top"/&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;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 25pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Total deferred tax assets&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;11,375&#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:top"/&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5,249&#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:top"/&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5,960&#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:top"/&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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Deferred tax liabilities:&lt;/span&gt;&lt;/td&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;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 2px 13pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Property, equipment, and software&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(8,316)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(4,995)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(3,003)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Goodwill&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(749)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;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 colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(653)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;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 colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(562)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Prepaid expense&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(1,365)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(400)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(256)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Right-of-use asset&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(5,201)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;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 colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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:top"/&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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:top"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Unrealized gain on equity investment&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(1,296)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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:top"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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:top"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 25pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Total deferred tax liabilities&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(16,927)&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:top"/&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(6,048)&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:top"/&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(3,821)&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:top"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Net deferred income tax asset (liabilities)&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 2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(5,552)&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:top"/&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(799)&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:top"/&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,139&#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:top"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company had gross state net operating loss carryforwards of approximately $1.9 million as of December&#160;31, 2021. These net operating losses will expire at various dates beginning in 2035 if not utilized and may be subject to annual limitations of usage, as promulgated by the Internal Revenue Service, due to ownership changes that may have occurred in the past. As of December&#160;31, 2021, the Company had state research and development credit carryforwards of $2.9 million. The state credits can be carried forward indefinitely.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Pursuant to Section 382 of the Internal Revenue Code of 1986, as amended (&#x201c;Code&#x201d;), the Company&#x2019;s ability to utilize net operating loss carryforwards or other tax attributes, such as research tax credits, in any taxable year may be limited if the Company experiences an &#x201c;ownership change.&#x201d; A Section 382 &#x201c;ownership change&#x201d; generally occurs if one or more stockholders or groups of stockholders who own at least 5% of the Company&#x2019;s stock increase their ownership by more than 50 percentage points over their lowest ownership percentage within a rolling three year period. Similar rules may apply under state tax laws. Net operating loss carryforwards and other tax attributes generated are currently not subject to limitation by Section 382, but subsequent changes in the Company&#x2019;s stock ownership as well as other changes that may be outside of the Company&#x2019;s control, could result in additional ownership changes under Section 382 of the Code.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Deferred Tax Valuation Allowance&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.5pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;A valuation allowance is provided for deferred tax assets where the recoverability of the assets is uncertain. The determination to provide a valuation allowance is dependent upon the assessment of whether it is more likely than not that sufficient future taxable income will be generated to utilize the deferred tax assets. Management has determined that there is sufficient positive evidence that a valuation allowance against deferred tax assets is not &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;required as of December&#160;31, 2021 and 2020, except for state research credit carryforwards, starting in 2020, for which realization is not deemed more likely than not given the Company expects to generate more credits in future than can be utilized against projected taxable income.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.5pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company has not historically provided for U.S. deferred taxes on the cumulative earnings of non-U.S. affiliates that have been reinvested indefinitely. However, under the 2017 Tax Act the Company was deemed to have repatriated the cumulative earnings of its non-U.S. affiliates and the U.S. liability associated with those cumulative earnings has been reflected in the current federal tax provision. In addition, the Tax Act has enacted tax provisions that will subject all foreign earnings to U.S. taxation. The Company will continue to maintain its policy of indefinite reinvestment to the extent that the repatriation of foreign earnings are restricted by local laws, accounting rules, substantial incremental costs associated with repatriating the foreign earnings, or other business requirements.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Uncertain Tax Positions&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The activity related to the unrecognized income tax benefits is as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.5pt;text-indent:18pt"&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:55.791%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.842%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.842%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.843%"/&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="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;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="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Gross unrecognized income tax benefits &#x2014; beginning balance&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,208&#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:top"/&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,369&#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:top"/&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,210&#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:top"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Increases related to tax positions taken during the current year&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;649&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;951&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;541&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Decreases related to tax positions taken during prior years&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(1,493)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;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 colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(112)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;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 colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(382)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Increases related to tax positions taken during the prior years&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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:top"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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:top"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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:top"/&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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Gross unrecognized income tax benefits &#x2014; ending balance&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,364&#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:top"/&gt;&lt;td colspan="3" style="background-color:#cceeff;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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,208&#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:top"/&gt;&lt;td colspan="3" style="background-color:#cceeff;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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,369&#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:top"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company recognizes interest and penalties, if any, related to uncertain tax positions in its income tax provision. As of December&#160;31, 2021 and 2020, the Company had approximately $0.1&#160;million and $0.3&#160;million, respectively, of accrued interest related to uncertain tax positions.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;All of the $2.4 million of unrecognized income tax benefits would, if recognized, impact the effective tax rate in the period in which each of the benefits is recognized. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.5pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company files U.S., state and foreign income tax returns with varying statutes of limitations. The federal, state, and foreign returns statute of limitations remains open for tax years from 2013 and thereafter. The Company is currently under audit by the IRS for the U.S. 2019 federal tax return. There are currently no income tax audits involving any U.S. states or foreign tax jurisdictions.&lt;/span&gt;&lt;/div&gt;</us-gaap:IncomeTaxDisclosureTextBlock>
    <us-gaap:ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90ZXh0cmVnaW9uOmIxYjQ5OWNhZmMzYjRlNDFiMjFkZGU0YTY1NzNhY2VlXzEwOTk1MTE2MzI0ODY_409c19c3-ec52-463f-9b89-445806068166">&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table presents domestic and foreign components of income (loss) before income taxes for the periods presented (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.5pt;text-indent:18pt"&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:55.791%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.842%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.842%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.843%"/&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="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 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="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Domestic&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;61,822&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;28,169&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;6,995&#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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;International&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2,981&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;3,411&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2,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;/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:10pt;font-weight:400;line-height:120%"&gt;Income before provision for income taxes&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;64,803&#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;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;31,580&#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;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;9,222&#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:ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTphOGQyYTg2MzllNzQ0ZGRjODk3YzFhNmYzYWY0MmE4Ni90YWJsZXJhbmdlOmE4ZDJhODYzOWU3NDRkZGM4OTdjMWE2ZjNhZjQyYTg2XzItMS0xLTEtMjgxMDU_5c77560f-5ae3-4960-ae56-bce461a8b2c3"
      unitRef="usd">61822000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTphOGQyYTg2MzllNzQ0ZGRjODk3YzFhNmYzYWY0MmE4Ni90YWJsZXJhbmdlOmE4ZDJhODYzOWU3NDRkZGM4OTdjMWE2ZjNhZjQyYTg2XzItMy0xLTEtMjgxMDU_04b6d404-6a90-406d-8869-3548d0aca176"
      unitRef="usd">28169000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTphOGQyYTg2MzllNzQ0ZGRjODk3YzFhNmYzYWY0MmE4Ni90YWJsZXJhbmdlOmE4ZDJhODYzOWU3NDRkZGM4OTdjMWE2ZjNhZjQyYTg2XzItNS0xLTEtMjgxMDU_67e9b7b0-7584-4be8-ad57-71db97aa2510"
      unitRef="usd">6995000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTphOGQyYTg2MzllNzQ0ZGRjODk3YzFhNmYzYWY0MmE4Ni90YWJsZXJhbmdlOmE4ZDJhODYzOWU3NDRkZGM4OTdjMWE2ZjNhZjQyYTg2XzMtMS0xLTEtMjgxMDU_81e2073b-a07e-418d-84be-a4a549cec7ad"
      unitRef="usd">2981000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTphOGQyYTg2MzllNzQ0ZGRjODk3YzFhNmYzYWY0MmE4Ni90YWJsZXJhbmdlOmE4ZDJhODYzOWU3NDRkZGM4OTdjMWE2ZjNhZjQyYTg2XzMtMy0xLTEtMjgxMDU_12d89764-c7b5-4109-87d9-28af68a403ad"
      unitRef="usd">3411000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTphOGQyYTg2MzllNzQ0ZGRjODk3YzFhNmYzYWY0MmE4Ni90YWJsZXJhbmdlOmE4ZDJhODYzOWU3NDRkZGM4OTdjMWE2ZjNhZjQyYTg2XzMtNS0xLTEtMjgxMDU_2fd366f3-30c3-4afb-8b32-10091615030f"
      unitRef="usd">2227000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTphOGQyYTg2MzllNzQ0ZGRjODk3YzFhNmYzYWY0MmE4Ni90YWJsZXJhbmdlOmE4ZDJhODYzOWU3NDRkZGM4OTdjMWE2ZjNhZjQyYTg2XzQtMS0xLTEtMzMxODk_7807e496-373e-44b7-8d30-424de53c05b5"
      unitRef="usd">64803000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTphOGQyYTg2MzllNzQ0ZGRjODk3YzFhNmYzYWY0MmE4Ni90YWJsZXJhbmdlOmE4ZDJhODYzOWU3NDRkZGM4OTdjMWE2ZjNhZjQyYTg2XzQtMy0xLTEtMzMyMDI_a68cfe48-606c-40e4-ac97-746e0d121341"
      unitRef="usd">31580000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTphOGQyYTg2MzllNzQ0ZGRjODk3YzFhNmYzYWY0MmE4Ni90YWJsZXJhbmdlOmE4ZDJhODYzOWU3NDRkZGM4OTdjMWE2ZjNhZjQyYTg2XzQtNS0xLTEtMzMyMDQ_688a7025-01c3-4895-b7d3-8a576bedb919"
      unitRef="usd">9222000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90ZXh0cmVnaW9uOmIxYjQ5OWNhZmMzYjRlNDFiMjFkZGU0YTY1NzNhY2VlXzEwOTk1MTE2MzI0ODU_bb0b5299-69c9-4534-8aa6-7a489d43bbeb">&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The income tax (benefit) provision is composed of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.5pt;text-indent:18pt"&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:55.791%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.842%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.842%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.843%"/&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="15" style="padding:2px 1pt;text-align:center;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 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="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;Current provisions for income taxes:&lt;/span&gt;&lt;/td&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;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 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;2,437&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;360&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;1,639&#160;&lt;/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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;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 colspan="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:9pt;font-weight:400;line-height:120%"&gt;240&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;58&#160;&lt;/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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;295&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;1,434&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;689&#160;&lt;/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 25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;Total current tax expense&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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;3,446&#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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;2,034&#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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;2,386&#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 style="height:15pt"&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;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;Deferred tax expense:&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;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;4,513&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;1,845&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;254&#160;&lt;/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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;251&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;1,170&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;4&#160;&lt;/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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;(11)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;(82)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;(65)&lt;/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 25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;Total deferred tax expense&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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;4,753&#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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;2,933&#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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;193&#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 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;Total provision for income taxes&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 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;8,199&#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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;4,967&#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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;2,579&#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;</us-gaap:ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock>
    <us-gaap:CurrentFederalTaxExpenseBenefit
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTo3NTE3NGNkNjZhOGQ0OTVmOTFlZGRmYTI0MzYxMzgwNC90YWJsZXJhbmdlOjc1MTc0Y2Q2NmE4ZDQ5NWY5MWVkZGZhMjQzNjEzODA0XzMtMS0xLTEtMjgxMDU_905ce877-ff51-48dd-b216-5235139214c4"
      unitRef="usd">2437000</us-gaap:CurrentFederalTaxExpenseBenefit>
    <us-gaap:CurrentFederalTaxExpenseBenefit
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTo3NTE3NGNkNjZhOGQ0OTVmOTFlZGRmYTI0MzYxMzgwNC90YWJsZXJhbmdlOjc1MTc0Y2Q2NmE4ZDQ5NWY5MWVkZGZhMjQzNjEzODA0XzMtMy0xLTEtMjgxMDU_1c58a08e-812e-4c4d-8bbe-637547ca4895"
      unitRef="usd">360000</us-gaap:CurrentFederalTaxExpenseBenefit>
    <us-gaap:CurrentFederalTaxExpenseBenefit
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTo3NTE3NGNkNjZhOGQ0OTVmOTFlZGRmYTI0MzYxMzgwNC90YWJsZXJhbmdlOjc1MTc0Y2Q2NmE4ZDQ5NWY5MWVkZGZhMjQzNjEzODA0XzMtNS0xLTEtMjgxMDU_65fc94a0-6c74-4f43-8dcd-4510be71a63b"
      unitRef="usd">1639000</us-gaap:CurrentFederalTaxExpenseBenefit>
    <us-gaap:CurrentStateAndLocalTaxExpenseBenefit
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTo3NTE3NGNkNjZhOGQ0OTVmOTFlZGRmYTI0MzYxMzgwNC90YWJsZXJhbmdlOjc1MTc0Y2Q2NmE4ZDQ5NWY5MWVkZGZhMjQzNjEzODA0XzQtMS0xLTEtMjgxMDU_1d2eaff9-9f5b-4a23-b8b1-6823c4da34cc"
      unitRef="usd">714000</us-gaap:CurrentStateAndLocalTaxExpenseBenefit>
    <us-gaap:CurrentStateAndLocalTaxExpenseBenefit
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTo3NTE3NGNkNjZhOGQ0OTVmOTFlZGRmYTI0MzYxMzgwNC90YWJsZXJhbmdlOjc1MTc0Y2Q2NmE4ZDQ5NWY5MWVkZGZhMjQzNjEzODA0XzQtMy0xLTEtMjgxMDU_d56c18a9-638d-4919-80cc-f6119ef941ac"
      unitRef="usd">240000</us-gaap:CurrentStateAndLocalTaxExpenseBenefit>
    <us-gaap:CurrentStateAndLocalTaxExpenseBenefit
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTo3NTE3NGNkNjZhOGQ0OTVmOTFlZGRmYTI0MzYxMzgwNC90YWJsZXJhbmdlOjc1MTc0Y2Q2NmE4ZDQ5NWY5MWVkZGZhMjQzNjEzODA0XzQtNS0xLTEtMjgxMDU_1bd3fd77-632b-4e82-b674-1c3cec295a5b"
      unitRef="usd">58000</us-gaap:CurrentStateAndLocalTaxExpenseBenefit>
    <us-gaap:CurrentForeignTaxExpenseBenefit
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTo3NTE3NGNkNjZhOGQ0OTVmOTFlZGRmYTI0MzYxMzgwNC90YWJsZXJhbmdlOjc1MTc0Y2Q2NmE4ZDQ5NWY5MWVkZGZhMjQzNjEzODA0XzUtMS0xLTEtMjgxMDU_41209718-ae7e-4199-8b2c-84c544cdcea9"
      unitRef="usd">295000</us-gaap:CurrentForeignTaxExpenseBenefit>
    <us-gaap:CurrentForeignTaxExpenseBenefit
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTo3NTE3NGNkNjZhOGQ0OTVmOTFlZGRmYTI0MzYxMzgwNC90YWJsZXJhbmdlOjc1MTc0Y2Q2NmE4ZDQ5NWY5MWVkZGZhMjQzNjEzODA0XzUtMy0xLTEtMjgxMDU_926ad898-0785-4f9f-b42b-56a27a5248c4"
      unitRef="usd">1434000</us-gaap:CurrentForeignTaxExpenseBenefit>
    <us-gaap:CurrentForeignTaxExpenseBenefit
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTo3NTE3NGNkNjZhOGQ0OTVmOTFlZGRmYTI0MzYxMzgwNC90YWJsZXJhbmdlOjc1MTc0Y2Q2NmE4ZDQ5NWY5MWVkZGZhMjQzNjEzODA0XzUtNS0xLTEtMjgxMDU_cf119392-f039-4374-afdc-a6d1870b30c7"
      unitRef="usd">689000</us-gaap:CurrentForeignTaxExpenseBenefit>
    <us-gaap:CurrentIncomeTaxExpenseBenefit
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTo3NTE3NGNkNjZhOGQ0OTVmOTFlZGRmYTI0MzYxMzgwNC90YWJsZXJhbmdlOjc1MTc0Y2Q2NmE4ZDQ5NWY5MWVkZGZhMjQzNjEzODA0XzYtMS0xLTEtMzMxNTg_36fca3e1-b0f7-4774-b823-86438313d17d"
      unitRef="usd">3446000</us-gaap:CurrentIncomeTaxExpenseBenefit>
    <us-gaap:CurrentIncomeTaxExpenseBenefit
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTo3NTE3NGNkNjZhOGQ0OTVmOTFlZGRmYTI0MzYxMzgwNC90YWJsZXJhbmdlOjc1MTc0Y2Q2NmE4ZDQ5NWY5MWVkZGZhMjQzNjEzODA0XzYtMy0xLTEtMzMxODM_1b4c0735-2385-47c8-82a9-a54380176b1c"
      unitRef="usd">2034000</us-gaap:CurrentIncomeTaxExpenseBenefit>
    <us-gaap:CurrentIncomeTaxExpenseBenefit
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTo3NTE3NGNkNjZhOGQ0OTVmOTFlZGRmYTI0MzYxMzgwNC90YWJsZXJhbmdlOjc1MTc0Y2Q2NmE4ZDQ5NWY5MWVkZGZhMjQzNjEzODA0XzYtNS0xLTEtMzMxODY_8189f995-934e-4922-ad06-f4d7573ffc92"
      unitRef="usd">2386000</us-gaap:CurrentIncomeTaxExpenseBenefit>
    <us-gaap:DeferredFederalIncomeTaxExpenseBenefit
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTo3NTE3NGNkNjZhOGQ0OTVmOTFlZGRmYTI0MzYxMzgwNC90YWJsZXJhbmdlOjc1MTc0Y2Q2NmE4ZDQ5NWY5MWVkZGZhMjQzNjEzODA0XzktMS0xLTEtMjgxMDU_04d306af-528d-4cb7-a5dc-8b12789b71a2"
      unitRef="usd">4513000</us-gaap:DeferredFederalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredFederalIncomeTaxExpenseBenefit
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTo3NTE3NGNkNjZhOGQ0OTVmOTFlZGRmYTI0MzYxMzgwNC90YWJsZXJhbmdlOjc1MTc0Y2Q2NmE4ZDQ5NWY5MWVkZGZhMjQzNjEzODA0XzktMy0xLTEtMjgxMDU_e9621e46-5a49-45b0-9725-dca4fb16b2f1"
      unitRef="usd">1845000</us-gaap:DeferredFederalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredFederalIncomeTaxExpenseBenefit
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTo3NTE3NGNkNjZhOGQ0OTVmOTFlZGRmYTI0MzYxMzgwNC90YWJsZXJhbmdlOjc1MTc0Y2Q2NmE4ZDQ5NWY5MWVkZGZhMjQzNjEzODA0XzktNS0xLTEtMjgxMDU_e2a86581-b3d7-4bbf-8d74-d309939ba2cf"
      unitRef="usd">254000</us-gaap:DeferredFederalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTo3NTE3NGNkNjZhOGQ0OTVmOTFlZGRmYTI0MzYxMzgwNC90YWJsZXJhbmdlOjc1MTc0Y2Q2NmE4ZDQ5NWY5MWVkZGZhMjQzNjEzODA0XzEwLTEtMS0xLTI4MTA1_9a8bff17-2a62-41dc-bc67-3a8cd5e8e9cb"
      unitRef="usd">251000</us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTo3NTE3NGNkNjZhOGQ0OTVmOTFlZGRmYTI0MzYxMzgwNC90YWJsZXJhbmdlOjc1MTc0Y2Q2NmE4ZDQ5NWY5MWVkZGZhMjQzNjEzODA0XzEwLTMtMS0xLTI4MTA1_e3ea63f3-532d-400b-bafd-6721a1b2758a"
      unitRef="usd">1170000</us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTo3NTE3NGNkNjZhOGQ0OTVmOTFlZGRmYTI0MzYxMzgwNC90YWJsZXJhbmdlOjc1MTc0Y2Q2NmE4ZDQ5NWY5MWVkZGZhMjQzNjEzODA0XzEwLTUtMS0xLTI4MTA1_44e042b8-ad6b-4efa-8832-54b2d893f9d4"
      unitRef="usd">4000</us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredForeignIncomeTaxExpenseBenefit
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTo3NTE3NGNkNjZhOGQ0OTVmOTFlZGRmYTI0MzYxMzgwNC90YWJsZXJhbmdlOjc1MTc0Y2Q2NmE4ZDQ5NWY5MWVkZGZhMjQzNjEzODA0XzExLTEtMS0xLTI4MTA1_69a4c325-789f-418d-a66f-28a5a9a1f038"
      unitRef="usd">-11000</us-gaap:DeferredForeignIncomeTaxExpenseBenefit>
    <us-gaap:DeferredForeignIncomeTaxExpenseBenefit
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTo3NTE3NGNkNjZhOGQ0OTVmOTFlZGRmYTI0MzYxMzgwNC90YWJsZXJhbmdlOjc1MTc0Y2Q2NmE4ZDQ5NWY5MWVkZGZhMjQzNjEzODA0XzExLTMtMS0xLTI4MTA1_a9d36a2f-1a1c-457e-bf89-d4d914b8f25e"
      unitRef="usd">-82000</us-gaap:DeferredForeignIncomeTaxExpenseBenefit>
    <us-gaap:DeferredForeignIncomeTaxExpenseBenefit
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTo3NTE3NGNkNjZhOGQ0OTVmOTFlZGRmYTI0MzYxMzgwNC90YWJsZXJhbmdlOjc1MTc0Y2Q2NmE4ZDQ5NWY5MWVkZGZhMjQzNjEzODA0XzExLTUtMS0xLTI4MTA1_4f42d250-9901-4310-9cfb-9f115eae945b"
      unitRef="usd">-65000</us-gaap:DeferredForeignIncomeTaxExpenseBenefit>
    <us-gaap:DeferredIncomeTaxExpenseBenefit
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTo3NTE3NGNkNjZhOGQ0OTVmOTFlZGRmYTI0MzYxMzgwNC90YWJsZXJhbmdlOjc1MTc0Y2Q2NmE4ZDQ5NWY5MWVkZGZhMjQzNjEzODA0XzEyLTEtMS0xLTMzMTcy_1476ea39-e63f-479e-80a4-fb38a2509846"
      unitRef="usd">4753000</us-gaap:DeferredIncomeTaxExpenseBenefit>
    <us-gaap:DeferredIncomeTaxExpenseBenefit
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTo3NTE3NGNkNjZhOGQ0OTVmOTFlZGRmYTI0MzYxMzgwNC90YWJsZXJhbmdlOjc1MTc0Y2Q2NmE4ZDQ5NWY5MWVkZGZhMjQzNjEzODA0XzEyLTMtMS0xLTMzMTgz_cdde45d5-3797-4e8f-8d86-5cf459cd3084"
      unitRef="usd">2933000</us-gaap:DeferredIncomeTaxExpenseBenefit>
    <us-gaap:DeferredIncomeTaxExpenseBenefit
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTo3NTE3NGNkNjZhOGQ0OTVmOTFlZGRmYTI0MzYxMzgwNC90YWJsZXJhbmdlOjc1MTc0Y2Q2NmE4ZDQ5NWY5MWVkZGZhMjQzNjEzODA0XzEyLTUtMS0xLTMzMTg2_284d64e3-69c4-49bf-a074-35c58d7b6c63"
      unitRef="usd">193000</us-gaap:DeferredIncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTo3NTE3NGNkNjZhOGQ0OTVmOTFlZGRmYTI0MzYxMzgwNC90YWJsZXJhbmdlOjc1MTc0Y2Q2NmE4ZDQ5NWY5MWVkZGZhMjQzNjEzODA0XzEzLTEtMS0xLTMzMTcy_6245386f-6605-400d-b2c2-30808c912188"
      unitRef="usd">8199000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTo3NTE3NGNkNjZhOGQ0OTVmOTFlZGRmYTI0MzYxMzgwNC90YWJsZXJhbmdlOjc1MTc0Y2Q2NmE4ZDQ5NWY5MWVkZGZhMjQzNjEzODA0XzEzLTMtMS0xLTMzMTgz_fbf2e69c-caa6-44b3-8291-3c35699b6aa6"
      unitRef="usd">4967000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTo3NTE3NGNkNjZhOGQ0OTVmOTFlZGRmYTI0MzYxMzgwNC90YWJsZXJhbmdlOjc1MTc0Y2Q2NmE4ZDQ5NWY5MWVkZGZhMjQzNjEzODA0XzEzLTUtMS0xLTMzMTg2_1ca4a3dd-2f55-43d2-99cd-fd9d83978c73"
      unitRef="usd">2579000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90ZXh0cmVnaW9uOmIxYjQ5OWNhZmMzYjRlNDFiMjFkZGU0YTY1NzNhY2VlXzEwOTk1MTE2MzI0ODc_f32f44bb-121d-41da-8e40-8542756624af">&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table presents a reconciliation of the statutory federal rate and the Company&#x2019;s effective tax rate for the periods presented:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.5pt;text-indent:18pt"&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:55.791%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.842%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.842%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.843%"/&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="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 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="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Statutory federal income tax rate&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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;21.00&#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;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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 #000;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:9pt;font-weight:400;line-height:100%"&gt;21.00&#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;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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 #000;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:9pt;font-weight:400;line-height:100%"&gt;21.00&#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;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;State after-tax rate&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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1.49&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4.47&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.67&#160;&lt;/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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(10.38)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(6.79)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5.48&#160;&lt;/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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Research 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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(1.37)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(2.04)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(2.85)&lt;/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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Transfer pricing reserve&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:9pt;font-weight:400;line-height:100%"&gt;(1.26)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1.32&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(0.68)&lt;/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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Foreign rate differential&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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.73&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.61&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2.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;/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:9pt;font-weight:400;line-height:100%"&gt;Foreign derived intangible income&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:9pt;font-weight:400;line-height:100%"&gt;(0.48)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(3.26)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(7.89)&lt;/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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Section 162(m) limitation&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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2.49&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:9pt;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:'Times New Roman',sans-serif;font-size:9pt;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:'Times New Roman',sans-serif;font-size:9pt;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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.42&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.42&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;9.86&#160;&lt;/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-bottom:3pt double #000;border-top:1pt solid #000;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:9pt;font-weight:400;line-height:100%"&gt;12.64&#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;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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-bottom:3pt double #000;border-top:1pt solid #000;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:9pt;font-weight:400;line-height:100%"&gt;15.73&#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;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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-bottom:3pt double #000;border-top:1pt solid #000;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:9pt;font-weight:400;line-height:100%"&gt;27.96&#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;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpiNzg5MDZjODFhNzk0MjYxYjI4YmFmZjcwMTE4OThkOC90YWJsZXJhbmdlOmI3ODkwNmM4MWE3OTQyNjFiMjhiYWZmNzAxMTg5OGQ4XzItMS0xLTEtMjgxMDU_4e44efd7-ab43-4278-a2ef-d75b74d77d87"
      unitRef="number">0.2100</us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate>
    <us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpiNzg5MDZjODFhNzk0MjYxYjI4YmFmZjcwMTE4OThkOC90YWJsZXJhbmdlOmI3ODkwNmM4MWE3OTQyNjFiMjhiYWZmNzAxMTg5OGQ4XzItMy0xLTEtMjgxMDU_350b479d-777a-4255-a0a4-edfd374ec0e5"
      unitRef="number">0.2100</us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate>
    <us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpiNzg5MDZjODFhNzk0MjYxYjI4YmFmZjcwMTE4OThkOC90YWJsZXJhbmdlOmI3ODkwNmM4MWE3OTQyNjFiMjhiYWZmNzAxMTg5OGQ4XzItNS0xLTEtMjgxMDU_ed660900-207e-4a14-895d-3d0e8adb9ab4"
      unitRef="number">0.2100</us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate>
    <us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpiNzg5MDZjODFhNzk0MjYxYjI4YmFmZjcwMTE4OThkOC90YWJsZXJhbmdlOmI3ODkwNmM4MWE3OTQyNjFiMjhiYWZmNzAxMTg5OGQ4XzMtMS0xLTEtMjgxMDU_b21b2f6a-848b-44a3-b6e5-68fe1fa2de61"
      unitRef="number">0.0149</us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes>
    <us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpiNzg5MDZjODFhNzk0MjYxYjI4YmFmZjcwMTE4OThkOC90YWJsZXJhbmdlOmI3ODkwNmM4MWE3OTQyNjFiMjhiYWZmNzAxMTg5OGQ4XzMtMy0xLTEtMjgxMDU_9612e669-2157-48da-9c2c-bc2bd9511117"
      unitRef="number">0.0447</us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes>
    <us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpiNzg5MDZjODFhNzk0MjYxYjI4YmFmZjcwMTE4OThkOC90YWJsZXJhbmdlOmI3ODkwNmM4MWE3OTQyNjFiMjhiYWZmNzAxMTg5OGQ4XzMtNS0xLTEtMjgxMDU_52f8480a-d620-4114-b99e-32610b4913c1"
      unitRef="number">0.0067</us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes>
    <us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseShareBasedCompensationCost
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpiNzg5MDZjODFhNzk0MjYxYjI4YmFmZjcwMTE4OThkOC90YWJsZXJhbmdlOmI3ODkwNmM4MWE3OTQyNjFiMjhiYWZmNzAxMTg5OGQ4XzQtMS0xLTEtMjgxMDU_76a0482e-e67a-4674-8e10-31082181f41c"
      unitRef="number">-0.1038</us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseShareBasedCompensationCost>
    <us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseShareBasedCompensationCost
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpiNzg5MDZjODFhNzk0MjYxYjI4YmFmZjcwMTE4OThkOC90YWJsZXJhbmdlOmI3ODkwNmM4MWE3OTQyNjFiMjhiYWZmNzAxMTg5OGQ4XzQtMy0xLTEtMjgxMDU_ec36cf98-39de-465b-8058-99dcd94d64b7"
      unitRef="number">-0.0679</us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseShareBasedCompensationCost>
    <us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseShareBasedCompensationCost
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpiNzg5MDZjODFhNzk0MjYxYjI4YmFmZjcwMTE4OThkOC90YWJsZXJhbmdlOmI3ODkwNmM4MWE3OTQyNjFiMjhiYWZmNzAxMTg5OGQ4XzQtNS0xLTEtMjgxMDU_2a11c4b2-b6c5-4158-a89a-dae1e2635420"
      unitRef="number">0.0548</us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseShareBasedCompensationCost>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxCreditsResearch
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpiNzg5MDZjODFhNzk0MjYxYjI4YmFmZjcwMTE4OThkOC90YWJsZXJhbmdlOmI3ODkwNmM4MWE3OTQyNjFiMjhiYWZmNzAxMTg5OGQ4XzUtMS0xLTEtMjgxMDU_8a8ea3c6-2247-44c5-87d3-8a583806dcc2"
      unitRef="number">0.0137</us-gaap:EffectiveIncomeTaxRateReconciliationTaxCreditsResearch>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxCreditsResearch
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpiNzg5MDZjODFhNzk0MjYxYjI4YmFmZjcwMTE4OThkOC90YWJsZXJhbmdlOmI3ODkwNmM4MWE3OTQyNjFiMjhiYWZmNzAxMTg5OGQ4XzUtMy0xLTEtMjgxMDU_3ffa5ab9-6d57-4fe3-9101-a7cac3ff1199"
      unitRef="number">0.0204</us-gaap:EffectiveIncomeTaxRateReconciliationTaxCreditsResearch>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxCreditsResearch
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpiNzg5MDZjODFhNzk0MjYxYjI4YmFmZjcwMTE4OThkOC90YWJsZXJhbmdlOmI3ODkwNmM4MWE3OTQyNjFiMjhiYWZmNzAxMTg5OGQ4XzUtNS0xLTEtMjgxMDU_316dbfff-73d2-4460-80be-b5596df7ae3e"
      unitRef="number">0.0285</us-gaap:EffectiveIncomeTaxRateReconciliationTaxCreditsResearch>
    <pubm:EffectiveIncomeTaxRateReconciliationTransferPricingReservePercent
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpiNzg5MDZjODFhNzk0MjYxYjI4YmFmZjcwMTE4OThkOC90YWJsZXJhbmdlOmI3ODkwNmM4MWE3OTQyNjFiMjhiYWZmNzAxMTg5OGQ4XzYtMS0xLTEtMjgxMDU_5da085ab-d40a-4902-91c1-7889522c2e94"
      unitRef="number">-0.0126</pubm:EffectiveIncomeTaxRateReconciliationTransferPricingReservePercent>
    <pubm:EffectiveIncomeTaxRateReconciliationTransferPricingReservePercent
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpiNzg5MDZjODFhNzk0MjYxYjI4YmFmZjcwMTE4OThkOC90YWJsZXJhbmdlOmI3ODkwNmM4MWE3OTQyNjFiMjhiYWZmNzAxMTg5OGQ4XzYtMy0xLTEtMjgxMDU_9babd378-0b8b-4887-90e9-ccd43f33bc85"
      unitRef="number">0.0132</pubm:EffectiveIncomeTaxRateReconciliationTransferPricingReservePercent>
    <pubm:EffectiveIncomeTaxRateReconciliationTransferPricingReservePercent
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpiNzg5MDZjODFhNzk0MjYxYjI4YmFmZjcwMTE4OThkOC90YWJsZXJhbmdlOmI3ODkwNmM4MWE3OTQyNjFiMjhiYWZmNzAxMTg5OGQ4XzYtNS0xLTEtMjgxMDU_938c763d-475e-42f2-a641-81e42fef3873"
      unitRef="number">-0.0068</pubm:EffectiveIncomeTaxRateReconciliationTransferPricingReservePercent>
    <us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpiNzg5MDZjODFhNzk0MjYxYjI4YmFmZjcwMTE4OThkOC90YWJsZXJhbmdlOmI3ODkwNmM4MWE3OTQyNjFiMjhiYWZmNzAxMTg5OGQ4XzctMS0xLTEtMjgxMDU_36b973c5-6283-4b38-a6e8-a9f4189933b0"
      unitRef="number">0.0073</us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential>
    <us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpiNzg5MDZjODFhNzk0MjYxYjI4YmFmZjcwMTE4OThkOC90YWJsZXJhbmdlOmI3ODkwNmM4MWE3OTQyNjFiMjhiYWZmNzAxMTg5OGQ4XzctMy0xLTEtMjgxMDU_d0dd0596-a6ac-4dc4-9782-d7ee0015cce2"
      unitRef="number">0.0061</us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential>
    <us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpiNzg5MDZjODFhNzk0MjYxYjI4YmFmZjcwMTE4OThkOC90YWJsZXJhbmdlOmI3ODkwNmM4MWE3OTQyNjFiMjhiYWZmNzAxMTg5OGQ4XzctNS0xLTEtMjgxMDU_08185f94-a0d2-46af-bc79-1af9683265a6"
      unitRef="number">0.0237</us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential>
    <us-gaap:EffectiveIncomeTaxRateReconciliationDeductionsExtraterritorialIncomeExclusion
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpiNzg5MDZjODFhNzk0MjYxYjI4YmFmZjcwMTE4OThkOC90YWJsZXJhbmdlOmI3ODkwNmM4MWE3OTQyNjFiMjhiYWZmNzAxMTg5OGQ4XzgtMS0xLTEtMjgxMDU_74196634-c3d1-4efe-9a44-7d0c7d36ca96"
      unitRef="number">0.0048</us-gaap:EffectiveIncomeTaxRateReconciliationDeductionsExtraterritorialIncomeExclusion>
    <us-gaap:EffectiveIncomeTaxRateReconciliationDeductionsExtraterritorialIncomeExclusion
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpiNzg5MDZjODFhNzk0MjYxYjI4YmFmZjcwMTE4OThkOC90YWJsZXJhbmdlOmI3ODkwNmM4MWE3OTQyNjFiMjhiYWZmNzAxMTg5OGQ4XzgtMy0xLTEtMjgxMDU_94c30702-e94f-400a-a3f7-a4e4abb61e61"
      unitRef="number">0.0326</us-gaap:EffectiveIncomeTaxRateReconciliationDeductionsExtraterritorialIncomeExclusion>
    <us-gaap:EffectiveIncomeTaxRateReconciliationDeductionsExtraterritorialIncomeExclusion
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpiNzg5MDZjODFhNzk0MjYxYjI4YmFmZjcwMTE4OThkOC90YWJsZXJhbmdlOmI3ODkwNmM4MWE3OTQyNjFiMjhiYWZmNzAxMTg5OGQ4XzgtNS0xLTEtMjgxMDU_6c079ee1-6e16-4372-ab39-b2a966fc6fc3"
      unitRef="number">0.0789</us-gaap:EffectiveIncomeTaxRateReconciliationDeductionsExtraterritorialIncomeExclusion>
    <pubm:EffectiveIncomeTaxRateReconciliationDeductionCoverEmployeesPercent
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpiNzg5MDZjODFhNzk0MjYxYjI4YmFmZjcwMTE4OThkOC90YWJsZXJhbmdlOmI3ODkwNmM4MWE3OTQyNjFiMjhiYWZmNzAxMTg5OGQ4XzktMS0xLTEtMzY1NjE_180cf597-c939-4f5e-8fc0-87a75708ddaf"
      unitRef="number">0.0249</pubm:EffectiveIncomeTaxRateReconciliationDeductionCoverEmployeesPercent>
    <pubm:EffectiveIncomeTaxRateReconciliationDeductionCoverEmployeesPercent
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpiNzg5MDZjODFhNzk0MjYxYjI4YmFmZjcwMTE4OThkOC90YWJsZXJhbmdlOmI3ODkwNmM4MWE3OTQyNjFiMjhiYWZmNzAxMTg5OGQ4XzktMy0xLTEtMzY1NjE_2d29b684-8532-43f1-a7b5-31e670dd37d1"
      unitRef="number">0</pubm:EffectiveIncomeTaxRateReconciliationDeductionCoverEmployeesPercent>
    <pubm:EffectiveIncomeTaxRateReconciliationDeductionCoverEmployeesPercent
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpiNzg5MDZjODFhNzk0MjYxYjI4YmFmZjcwMTE4OThkOC90YWJsZXJhbmdlOmI3ODkwNmM4MWE3OTQyNjFiMjhiYWZmNzAxMTg5OGQ4XzktNS0xLTEtMzY1NjE_c570686f-3d05-4055-a6e1-139a20d023c0"
      unitRef="number">0</pubm:EffectiveIncomeTaxRateReconciliationDeductionCoverEmployeesPercent>
    <us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpiNzg5MDZjODFhNzk0MjYxYjI4YmFmZjcwMTE4OThkOC90YWJsZXJhbmdlOmI3ODkwNmM4MWE3OTQyNjFiMjhiYWZmNzAxMTg5OGQ4XzktMS0xLTEtMjgxMDU_25f4e6d0-4d07-444f-9102-29c775a828d0"
      unitRef="number">0.0042</us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments>
    <us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpiNzg5MDZjODFhNzk0MjYxYjI4YmFmZjcwMTE4OThkOC90YWJsZXJhbmdlOmI3ODkwNmM4MWE3OTQyNjFiMjhiYWZmNzAxMTg5OGQ4XzktMy0xLTEtMjgxMDU_194f7e4a-fbad-47a1-8485-8e52a4073cc8"
      unitRef="number">0.0042</us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments>
    <us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpiNzg5MDZjODFhNzk0MjYxYjI4YmFmZjcwMTE4OThkOC90YWJsZXJhbmdlOmI3ODkwNmM4MWE3OTQyNjFiMjhiYWZmNzAxMTg5OGQ4XzktNS0xLTEtMjgxMDU_0042e201-ed94-424e-9ddb-ea250a3a38b4"
      unitRef="number">0.0986</us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments>
    <us-gaap:EffectiveIncomeTaxRateContinuingOperations
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpiNzg5MDZjODFhNzk0MjYxYjI4YmFmZjcwMTE4OThkOC90YWJsZXJhbmdlOmI3ODkwNmM4MWE3OTQyNjFiMjhiYWZmNzAxMTg5OGQ4XzEwLTEtMS0xLTMzMjEy_76416610-f624-4e2d-a00d-293cf76a9296"
      unitRef="number">0.1264</us-gaap:EffectiveIncomeTaxRateContinuingOperations>
    <us-gaap:EffectiveIncomeTaxRateContinuingOperations
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpiNzg5MDZjODFhNzk0MjYxYjI4YmFmZjcwMTE4OThkOC90YWJsZXJhbmdlOmI3ODkwNmM4MWE3OTQyNjFiMjhiYWZmNzAxMTg5OGQ4XzEwLTMtMS0xLTMzMjE5_fdf62c9e-8154-4757-bba8-45178f325749"
      unitRef="number">0.1573</us-gaap:EffectiveIncomeTaxRateContinuingOperations>
    <us-gaap:EffectiveIncomeTaxRateContinuingOperations
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpiNzg5MDZjODFhNzk0MjYxYjI4YmFmZjcwMTE4OThkOC90YWJsZXJhbmdlOmI3ODkwNmM4MWE3OTQyNjFiMjhiYWZmNzAxMTg5OGQ4XzEwLTUtMS0xLTMzMjIx_25e123eb-fd22-4f23-b34e-637f86c8ce85"
      unitRef="number">0.2796</us-gaap:EffectiveIncomeTaxRateContinuingOperations>
    <us-gaap:ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90ZXh0cmVnaW9uOmIxYjQ5OWNhZmMzYjRlNDFiMjFkZGU0YTY1NzNhY2VlXzEwOTk1MTE2MzI0ODg_8dbbeba9-59e3-4fe5-9e81-fa04b4aaabf8">&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Deferred income taxes reflect the net tax effects of temporary differences between carrying amounts of assets and liabilities for financial reporting purposes and the amounts used for income tax purposes. The following table presents the significant components of the Company&#x2019;s deferred tax assets and liabilities for the periods presented (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:12pt;text-indent:18pt"&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:55.791%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.842%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.842%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.843%"/&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="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 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="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Deferred tax assets:&lt;/span&gt;&lt;/td&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;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 2px 13pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Net operating loss carryforwards&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;56&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;124&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;194&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Accruals and allowances&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,104&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;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 colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;614&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;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 colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;784&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Tax credits&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,396&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,631&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,064&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Stock-based compensation&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,171&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;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 colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,045&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;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 colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,749&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Intangibles 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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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:top"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,106&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,202&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Lease obligation&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5,226&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;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 colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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:top"/&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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:top"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;808&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,101&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;967&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&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;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 2px 13pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Valuation allowance&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(1,396)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(1,372)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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:top"/&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;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 25pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Total deferred tax assets&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;11,375&#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:top"/&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5,249&#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:top"/&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5,960&#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:top"/&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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Deferred tax liabilities:&lt;/span&gt;&lt;/td&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;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 2px 13pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Property, equipment, and software&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(8,316)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(4,995)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(3,003)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Goodwill&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(749)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;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 colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(653)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;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 colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(562)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Prepaid expense&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(1,365)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(400)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(256)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Right-of-use asset&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(5,201)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;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 colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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:top"/&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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:top"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Unrealized gain on equity investment&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(1,296)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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:top"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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:top"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 25pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Total deferred tax liabilities&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(16,927)&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:top"/&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(6,048)&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:top"/&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(3,821)&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:top"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Net deferred income tax asset (liabilities)&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 2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(5,552)&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:top"/&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(799)&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:top"/&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,139&#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:top"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock>
    <us-gaap:DeferredTaxAssetsOperatingLossCarryforwards
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpjMWE5OTMyNzU1YmY0YzM4YjFjN2Y5MjcyYzgxZjRmYy90YWJsZXJhbmdlOmMxYTk5MzI3NTViZjRjMzhiMWM3ZjkyNzJjODFmNGZjXzMtMS0xLTEtMjgxMDU_2d17c077-17d9-406e-826d-24ff961b83e4"
      unitRef="usd">56000</us-gaap:DeferredTaxAssetsOperatingLossCarryforwards>
    <us-gaap:DeferredTaxAssetsOperatingLossCarryforwards
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpjMWE5OTMyNzU1YmY0YzM4YjFjN2Y5MjcyYzgxZjRmYy90YWJsZXJhbmdlOmMxYTk5MzI3NTViZjRjMzhiMWM3ZjkyNzJjODFmNGZjXzMtMy0xLTEtMjgxMDU_e2fa8b05-9e89-46a0-9eef-8b21aac1d0d1"
      unitRef="usd">124000</us-gaap:DeferredTaxAssetsOperatingLossCarryforwards>
    <us-gaap:DeferredTaxAssetsOperatingLossCarryforwards
      contextRef="ibcf318f535e34e548d6a7a49e392f2cd_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpjMWE5OTMyNzU1YmY0YzM4YjFjN2Y5MjcyYzgxZjRmYy90YWJsZXJhbmdlOmMxYTk5MzI3NTViZjRjMzhiMWM3ZjkyNzJjODFmNGZjXzMtNS0xLTEtMjgxMDU_ded5a978-411c-48c6-83b9-307653ca994f"
      unitRef="usd">194000</us-gaap:DeferredTaxAssetsOperatingLossCarryforwards>
    <us-gaap:DeferredTaxAssetsTaxDeferredExpenseReservesAndAccruals
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpjMWE5OTMyNzU1YmY0YzM4YjFjN2Y5MjcyYzgxZjRmYy90YWJsZXJhbmdlOmMxYTk5MzI3NTViZjRjMzhiMWM3ZjkyNzJjODFmNGZjXzQtMS0xLTEtMjgxMDU_27c3d43f-f158-4c63-886e-516aa1a6dd94"
      unitRef="usd">1104000</us-gaap:DeferredTaxAssetsTaxDeferredExpenseReservesAndAccruals>
    <us-gaap:DeferredTaxAssetsTaxDeferredExpenseReservesAndAccruals
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpjMWE5OTMyNzU1YmY0YzM4YjFjN2Y5MjcyYzgxZjRmYy90YWJsZXJhbmdlOmMxYTk5MzI3NTViZjRjMzhiMWM3ZjkyNzJjODFmNGZjXzQtMy0xLTEtMjgxMDU_6b9de87e-c7b5-42cd-92a0-3753dd7e1654"
      unitRef="usd">614000</us-gaap:DeferredTaxAssetsTaxDeferredExpenseReservesAndAccruals>
    <us-gaap:DeferredTaxAssetsTaxDeferredExpenseReservesAndAccruals
      contextRef="ibcf318f535e34e548d6a7a49e392f2cd_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpjMWE5OTMyNzU1YmY0YzM4YjFjN2Y5MjcyYzgxZjRmYy90YWJsZXJhbmdlOmMxYTk5MzI3NTViZjRjMzhiMWM3ZjkyNzJjODFmNGZjXzQtNS0xLTEtMjgxMDU_549ecf92-1da6-43a9-b5b1-bd8701f5a00f"
      unitRef="usd">784000</us-gaap:DeferredTaxAssetsTaxDeferredExpenseReservesAndAccruals>
    <us-gaap:DeferredTaxAssetsTaxCreditCarryforwards
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpjMWE5OTMyNzU1YmY0YzM4YjFjN2Y5MjcyYzgxZjRmYy90YWJsZXJhbmdlOmMxYTk5MzI3NTViZjRjMzhiMWM3ZjkyNzJjODFmNGZjXzUtMS0xLTEtMjgxMDU_7b96e0cc-0c18-47ad-8edf-99de03af7659"
      unitRef="usd">1396000</us-gaap:DeferredTaxAssetsTaxCreditCarryforwards>
    <us-gaap:DeferredTaxAssetsTaxCreditCarryforwards
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpjMWE5OTMyNzU1YmY0YzM4YjFjN2Y5MjcyYzgxZjRmYy90YWJsZXJhbmdlOmMxYTk5MzI3NTViZjRjMzhiMWM3ZjkyNzJjODFmNGZjXzUtMy0xLTEtMjgxMDU_7e235124-b7f2-4dfe-b2cd-0b24f1c00215"
      unitRef="usd">1631000</us-gaap:DeferredTaxAssetsTaxCreditCarryforwards>
    <us-gaap:DeferredTaxAssetsTaxCreditCarryforwards
      contextRef="ibcf318f535e34e548d6a7a49e392f2cd_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpjMWE5OTMyNzU1YmY0YzM4YjFjN2Y5MjcyYzgxZjRmYy90YWJsZXJhbmdlOmMxYTk5MzI3NTViZjRjMzhiMWM3ZjkyNzJjODFmNGZjXzUtNS0xLTEtMjgxMDU_f6785ef7-0de8-44bb-9196-247628ca27e0"
      unitRef="usd">1064000</us-gaap:DeferredTaxAssetsTaxCreditCarryforwards>
    <us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpjMWE5OTMyNzU1YmY0YzM4YjFjN2Y5MjcyYzgxZjRmYy90YWJsZXJhbmdlOmMxYTk5MzI3NTViZjRjMzhiMWM3ZjkyNzJjODFmNGZjXzYtMS0xLTEtMjgxMDU_effec327-bbaf-42e4-8ca1-ec0428aa6b64"
      unitRef="usd">3171000</us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost>
    <us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpjMWE5OTMyNzU1YmY0YzM4YjFjN2Y5MjcyYzgxZjRmYy90YWJsZXJhbmdlOmMxYTk5MzI3NTViZjRjMzhiMWM3ZjkyNzJjODFmNGZjXzYtMy0xLTEtMjgxMDU_1a38d66b-1d53-4789-91d6-356f1d5118a8"
      unitRef="usd">2045000</us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost>
    <us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost
      contextRef="ibcf318f535e34e548d6a7a49e392f2cd_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpjMWE5OTMyNzU1YmY0YzM4YjFjN2Y5MjcyYzgxZjRmYy90YWJsZXJhbmdlOmMxYTk5MzI3NTViZjRjMzhiMWM3ZjkyNzJjODFmNGZjXzYtNS0xLTEtMjgxMDU_ff49b92e-488b-4cc6-805f-f3d2c66b2e0c"
      unitRef="usd">1749000</us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost>
    <us-gaap:DeferredTaxAssetsGoodwillAndIntangibleAssets
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpjMWE5OTMyNzU1YmY0YzM4YjFjN2Y5MjcyYzgxZjRmYy90YWJsZXJhbmdlOmMxYTk5MzI3NTViZjRjMzhiMWM3ZjkyNzJjODFmNGZjXzctMS0xLTEtMjgxMDU_4c0eac28-1b37-4568-bca9-0f116f4486e1"
      unitRef="usd">1010000</us-gaap:DeferredTaxAssetsGoodwillAndIntangibleAssets>
    <us-gaap:DeferredTaxAssetsGoodwillAndIntangibleAssets
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpjMWE5OTMyNzU1YmY0YzM4YjFjN2Y5MjcyYzgxZjRmYy90YWJsZXJhbmdlOmMxYTk5MzI3NTViZjRjMzhiMWM3ZjkyNzJjODFmNGZjXzctMy0xLTEtMjgxMDU_c6531ddc-d2cf-4a03-9627-f96d78d2ccd3"
      unitRef="usd">1106000</us-gaap:DeferredTaxAssetsGoodwillAndIntangibleAssets>
    <us-gaap:DeferredTaxAssetsGoodwillAndIntangibleAssets
      contextRef="ibcf318f535e34e548d6a7a49e392f2cd_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpjMWE5OTMyNzU1YmY0YzM4YjFjN2Y5MjcyYzgxZjRmYy90YWJsZXJhbmdlOmMxYTk5MzI3NTViZjRjMzhiMWM3ZjkyNzJjODFmNGZjXzctNS0xLTEtMjgxMDU_36ad6ec6-ee4d-40a1-be69-5931667b51ca"
      unitRef="usd">1202000</us-gaap:DeferredTaxAssetsGoodwillAndIntangibleAssets>
    <pubm:DeferredTaxAssetsLeaseObligation
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpjMWE5OTMyNzU1YmY0YzM4YjFjN2Y5MjcyYzgxZjRmYy90YWJsZXJhbmdlOmMxYTk5MzI3NTViZjRjMzhiMWM3ZjkyNzJjODFmNGZjXzgtMS0xLTEtMzk4MjI_fa6445d8-ad89-4cd0-a944-462ef1f223ec"
      unitRef="usd">5226000</pubm:DeferredTaxAssetsLeaseObligation>
    <pubm:DeferredTaxAssetsLeaseObligation
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpjMWE5OTMyNzU1YmY0YzM4YjFjN2Y5MjcyYzgxZjRmYy90YWJsZXJhbmdlOmMxYTk5MzI3NTViZjRjMzhiMWM3ZjkyNzJjODFmNGZjXzgtMy0xLTEtMzk4MjI_bccea6ba-6c92-4d7b-b882-d77975b7ed85"
      unitRef="usd">0</pubm:DeferredTaxAssetsLeaseObligation>
    <pubm:DeferredTaxAssetsLeaseObligation
      contextRef="ibcf318f535e34e548d6a7a49e392f2cd_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpjMWE5OTMyNzU1YmY0YzM4YjFjN2Y5MjcyYzgxZjRmYy90YWJsZXJhbmdlOmMxYTk5MzI3NTViZjRjMzhiMWM3ZjkyNzJjODFmNGZjXzgtNS0xLTEtMzk4MjI_486b546c-4eeb-4fc5-a452-326807e8e7c7"
      unitRef="usd">0</pubm:DeferredTaxAssetsLeaseObligation>
    <us-gaap:DeferredTaxAssetsOther
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpjMWE5OTMyNzU1YmY0YzM4YjFjN2Y5MjcyYzgxZjRmYy90YWJsZXJhbmdlOmMxYTk5MzI3NTViZjRjMzhiMWM3ZjkyNzJjODFmNGZjXzgtMS0xLTEtMjgxMDU_e0a3992a-786a-4de5-a191-b73e19d57581"
      unitRef="usd">808000</us-gaap:DeferredTaxAssetsOther>
    <us-gaap:DeferredTaxAssetsOther
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpjMWE5OTMyNzU1YmY0YzM4YjFjN2Y5MjcyYzgxZjRmYy90YWJsZXJhbmdlOmMxYTk5MzI3NTViZjRjMzhiMWM3ZjkyNzJjODFmNGZjXzgtMy0xLTEtMjgxMDU_99b71d05-eb63-4f23-82f9-13b9425c0aeb"
      unitRef="usd">1101000</us-gaap:DeferredTaxAssetsOther>
    <us-gaap:DeferredTaxAssetsOther
      contextRef="ibcf318f535e34e548d6a7a49e392f2cd_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpjMWE5OTMyNzU1YmY0YzM4YjFjN2Y5MjcyYzgxZjRmYy90YWJsZXJhbmdlOmMxYTk5MzI3NTViZjRjMzhiMWM3ZjkyNzJjODFmNGZjXzgtNS0xLTEtMjgxMDU_e63936ef-cb58-4e18-bbfe-cac9bfd8c637"
      unitRef="usd">967000</us-gaap:DeferredTaxAssetsOther>
    <us-gaap:DeferredTaxAssetsValuationAllowance
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpjMWE5OTMyNzU1YmY0YzM4YjFjN2Y5MjcyYzgxZjRmYy90YWJsZXJhbmdlOmMxYTk5MzI3NTViZjRjMzhiMWM3ZjkyNzJjODFmNGZjXzEwLTEtMS0xLTI4MTA1_67e9a5ba-a42b-4b2b-9417-4efe1b07c7ed"
      unitRef="usd">1396000</us-gaap:DeferredTaxAssetsValuationAllowance>
    <us-gaap:DeferredTaxAssetsValuationAllowance
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpjMWE5OTMyNzU1YmY0YzM4YjFjN2Y5MjcyYzgxZjRmYy90YWJsZXJhbmdlOmMxYTk5MzI3NTViZjRjMzhiMWM3ZjkyNzJjODFmNGZjXzEwLTMtMS0xLTI4MTA1_78cfc645-5319-4d8a-9cf0-307cf7a9cc23"
      unitRef="usd">1372000</us-gaap:DeferredTaxAssetsValuationAllowance>
    <us-gaap:DeferredTaxAssetsValuationAllowance
      contextRef="ibcf318f535e34e548d6a7a49e392f2cd_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpjMWE5OTMyNzU1YmY0YzM4YjFjN2Y5MjcyYzgxZjRmYy90YWJsZXJhbmdlOmMxYTk5MzI3NTViZjRjMzhiMWM3ZjkyNzJjODFmNGZjXzEwLTUtMS0xLTI4MTA1_9f35b03b-7c15-444a-9e7f-7df037395d9b"
      unitRef="usd">0</us-gaap:DeferredTaxAssetsValuationAllowance>
    <us-gaap:DeferredTaxAssetsGross
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpjMWE5OTMyNzU1YmY0YzM4YjFjN2Y5MjcyYzgxZjRmYy90YWJsZXJhbmdlOmMxYTk5MzI3NTViZjRjMzhiMWM3ZjkyNzJjODFmNGZjXzEyLTEtMS0xLTMzMjQ2_5ddd0d57-8a55-4671-9a50-a02ad3884a22"
      unitRef="usd">11375000</us-gaap:DeferredTaxAssetsGross>
    <us-gaap:DeferredTaxAssetsGross
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpjMWE5OTMyNzU1YmY0YzM4YjFjN2Y5MjcyYzgxZjRmYy90YWJsZXJhbmdlOmMxYTk5MzI3NTViZjRjMzhiMWM3ZjkyNzJjODFmNGZjXzEyLTMtMS0xLTMzMjgy_5e175fdb-bd9e-4cee-98f1-cff296102219"
      unitRef="usd">5249000</us-gaap:DeferredTaxAssetsGross>
    <us-gaap:DeferredTaxAssetsGross
      contextRef="ibcf318f535e34e548d6a7a49e392f2cd_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpjMWE5OTMyNzU1YmY0YzM4YjFjN2Y5MjcyYzgxZjRmYy90YWJsZXJhbmdlOmMxYTk5MzI3NTViZjRjMzhiMWM3ZjkyNzJjODFmNGZjXzEyLTUtMS0xLTMzMjg1_fbe39a2b-4ddd-4c21-bb77-8ca15cf5686f"
      unitRef="usd">5960000</us-gaap:DeferredTaxAssetsGross>
    <us-gaap:DeferredTaxLiabilitiesPropertyPlantAndEquipment
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpjMWE5OTMyNzU1YmY0YzM4YjFjN2Y5MjcyYzgxZjRmYy90YWJsZXJhbmdlOmMxYTk5MzI3NTViZjRjMzhiMWM3ZjkyNzJjODFmNGZjXzE0LTEtMS0xLTI4MTA1_eb8e93f5-c428-46e2-b533-364ee1f8c68d"
      unitRef="usd">8316000</us-gaap:DeferredTaxLiabilitiesPropertyPlantAndEquipment>
    <us-gaap:DeferredTaxLiabilitiesPropertyPlantAndEquipment
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpjMWE5OTMyNzU1YmY0YzM4YjFjN2Y5MjcyYzgxZjRmYy90YWJsZXJhbmdlOmMxYTk5MzI3NTViZjRjMzhiMWM3ZjkyNzJjODFmNGZjXzE0LTMtMS0xLTI4MTA1_7aab2d81-e842-4ae3-842d-0f618e431d64"
      unitRef="usd">4995000</us-gaap:DeferredTaxLiabilitiesPropertyPlantAndEquipment>
    <us-gaap:DeferredTaxLiabilitiesPropertyPlantAndEquipment
      contextRef="ibcf318f535e34e548d6a7a49e392f2cd_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpjMWE5OTMyNzU1YmY0YzM4YjFjN2Y5MjcyYzgxZjRmYy90YWJsZXJhbmdlOmMxYTk5MzI3NTViZjRjMzhiMWM3ZjkyNzJjODFmNGZjXzE0LTUtMS0xLTI4MTA1_987afbb8-ecfc-4036-a047-f5789e444a14"
      unitRef="usd">3003000</us-gaap:DeferredTaxLiabilitiesPropertyPlantAndEquipment>
    <us-gaap:DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpjMWE5OTMyNzU1YmY0YzM4YjFjN2Y5MjcyYzgxZjRmYy90YWJsZXJhbmdlOmMxYTk5MzI3NTViZjRjMzhiMWM3ZjkyNzJjODFmNGZjXzE1LTEtMS0xLTI4MTA1_f717007b-2e93-4469-a56c-f49481e5aba1"
      unitRef="usd">749000</us-gaap:DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill>
    <us-gaap:DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpjMWE5OTMyNzU1YmY0YzM4YjFjN2Y5MjcyYzgxZjRmYy90YWJsZXJhbmdlOmMxYTk5MzI3NTViZjRjMzhiMWM3ZjkyNzJjODFmNGZjXzE1LTMtMS0xLTI4MTA1_b0a7875a-d66b-4569-aa29-10c6c421e281"
      unitRef="usd">653000</us-gaap:DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill>
    <us-gaap:DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill
      contextRef="ibcf318f535e34e548d6a7a49e392f2cd_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpjMWE5OTMyNzU1YmY0YzM4YjFjN2Y5MjcyYzgxZjRmYy90YWJsZXJhbmdlOmMxYTk5MzI3NTViZjRjMzhiMWM3ZjkyNzJjODFmNGZjXzE1LTUtMS0xLTI4MTA1_c8519d35-0736-4d3b-b786-e6facb18202a"
      unitRef="usd">562000</us-gaap:DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill>
    <us-gaap:DeferredTaxLiabilitiesPrepaidExpenses
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpjMWE5OTMyNzU1YmY0YzM4YjFjN2Y5MjcyYzgxZjRmYy90YWJsZXJhbmdlOmMxYTk5MzI3NTViZjRjMzhiMWM3ZjkyNzJjODFmNGZjXzE2LTEtMS0xLTM2NTcz_ade44374-a207-4c59-993b-98b5d9365e11"
      unitRef="usd">1365000</us-gaap:DeferredTaxLiabilitiesPrepaidExpenses>
    <us-gaap:DeferredTaxLiabilitiesPrepaidExpenses
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpjMWE5OTMyNzU1YmY0YzM4YjFjN2Y5MjcyYzgxZjRmYy90YWJsZXJhbmdlOmMxYTk5MzI3NTViZjRjMzhiMWM3ZjkyNzJjODFmNGZjXzE2LTMtMS0xLTM2NTcz_58354b37-4969-46b0-8edc-ad68c79642a4"
      unitRef="usd">400000</us-gaap:DeferredTaxLiabilitiesPrepaidExpenses>
    <us-gaap:DeferredTaxLiabilitiesPrepaidExpenses
      contextRef="ibcf318f535e34e548d6a7a49e392f2cd_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpjMWE5OTMyNzU1YmY0YzM4YjFjN2Y5MjcyYzgxZjRmYy90YWJsZXJhbmdlOmMxYTk5MzI3NTViZjRjMzhiMWM3ZjkyNzJjODFmNGZjXzE2LTUtMS0xLTM2NTcz_51d2b237-9d42-4c27-a88e-67cb86a32153"
      unitRef="usd">256000</us-gaap:DeferredTaxLiabilitiesPrepaidExpenses>
    <pubm:DeferredTaxLiabilitiesRightOfUseAsset
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpjMWE5OTMyNzU1YmY0YzM4YjFjN2Y5MjcyYzgxZjRmYy90YWJsZXJhbmdlOmMxYTk5MzI3NTViZjRjMzhiMWM3ZjkyNzJjODFmNGZjXzE4LTEtMS0xLTM5ODMz_b28e46ec-4a2c-457b-be12-32d805f54e98"
      unitRef="usd">5201000</pubm:DeferredTaxLiabilitiesRightOfUseAsset>
    <pubm:DeferredTaxLiabilitiesRightOfUseAsset
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpjMWE5OTMyNzU1YmY0YzM4YjFjN2Y5MjcyYzgxZjRmYy90YWJsZXJhbmdlOmMxYTk5MzI3NTViZjRjMzhiMWM3ZjkyNzJjODFmNGZjXzE4LTMtMS0xLTM5ODMz_8b3c6f9b-4a37-462b-ad36-7af3a2761ced"
      unitRef="usd">0</pubm:DeferredTaxLiabilitiesRightOfUseAsset>
    <pubm:DeferredTaxLiabilitiesRightOfUseAsset
      contextRef="ibcf318f535e34e548d6a7a49e392f2cd_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpjMWE5OTMyNzU1YmY0YzM4YjFjN2Y5MjcyYzgxZjRmYy90YWJsZXJhbmdlOmMxYTk5MzI3NTViZjRjMzhiMWM3ZjkyNzJjODFmNGZjXzE4LTUtMS0xLTM5ODMz_0e279509-e6e0-4f78-a4ff-1d355f4bfc88"
      unitRef="usd">0</pubm:DeferredTaxLiabilitiesRightOfUseAsset>
    <us-gaap:DeferredTaxLiabilitiesUnrealizedGainsOnTradingSecurities
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpjMWE5OTMyNzU1YmY0YzM4YjFjN2Y5MjcyYzgxZjRmYy90YWJsZXJhbmdlOmMxYTk5MzI3NTViZjRjMzhiMWM3ZjkyNzJjODFmNGZjXzE2LTEtMS0xLTI4MTA1_fe260758-0f81-4719-94c5-7af8ffd6eaa4"
      unitRef="usd">1296000</us-gaap:DeferredTaxLiabilitiesUnrealizedGainsOnTradingSecurities>
    <us-gaap:DeferredTaxLiabilitiesUnrealizedGainsOnTradingSecurities
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpjMWE5OTMyNzU1YmY0YzM4YjFjN2Y5MjcyYzgxZjRmYy90YWJsZXJhbmdlOmMxYTk5MzI3NTViZjRjMzhiMWM3ZjkyNzJjODFmNGZjXzE2LTMtMS0xLTI4MTA1_04f9b9b8-a8e4-4d88-bdf5-a3bc0b917862"
      unitRef="usd">0</us-gaap:DeferredTaxLiabilitiesUnrealizedGainsOnTradingSecurities>
    <us-gaap:DeferredTaxLiabilitiesUnrealizedGainsOnTradingSecurities
      contextRef="ibcf318f535e34e548d6a7a49e392f2cd_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpjMWE5OTMyNzU1YmY0YzM4YjFjN2Y5MjcyYzgxZjRmYy90YWJsZXJhbmdlOmMxYTk5MzI3NTViZjRjMzhiMWM3ZjkyNzJjODFmNGZjXzE2LTUtMS0xLTI4MTA1_1b00587c-b3b3-4011-8c62-3bc6a6eb58cf"
      unitRef="usd">0</us-gaap:DeferredTaxLiabilitiesUnrealizedGainsOnTradingSecurities>
    <us-gaap:DeferredIncomeTaxLiabilities
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpjMWE5OTMyNzU1YmY0YzM4YjFjN2Y5MjcyYzgxZjRmYy90YWJsZXJhbmdlOmMxYTk5MzI3NTViZjRjMzhiMWM3ZjkyNzJjODFmNGZjXzE3LTEtMS0xLTMzMjY3_faa83e11-8fa4-48e0-9531-ec08cd0b8d77"
      unitRef="usd">16927000</us-gaap:DeferredIncomeTaxLiabilities>
    <us-gaap:DeferredIncomeTaxLiabilities
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpjMWE5OTMyNzU1YmY0YzM4YjFjN2Y5MjcyYzgxZjRmYy90YWJsZXJhbmdlOmMxYTk5MzI3NTViZjRjMzhiMWM3ZjkyNzJjODFmNGZjXzE3LTMtMS0xLTMzMjgy_cc106f4f-0d2a-4e5e-bfad-db6d47ad4953"
      unitRef="usd">6048000</us-gaap:DeferredIncomeTaxLiabilities>
    <us-gaap:DeferredIncomeTaxLiabilities
      contextRef="ibcf318f535e34e548d6a7a49e392f2cd_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpjMWE5OTMyNzU1YmY0YzM4YjFjN2Y5MjcyYzgxZjRmYy90YWJsZXJhbmdlOmMxYTk5MzI3NTViZjRjMzhiMWM3ZjkyNzJjODFmNGZjXzE3LTUtMS0xLTMzMjg1_ca104cc6-e53c-4000-89e3-57cd69ad493f"
      unitRef="usd">3821000</us-gaap:DeferredIncomeTaxLiabilities>
    <us-gaap:DeferredTaxLiabilities
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpjMWE5OTMyNzU1YmY0YzM4YjFjN2Y5MjcyYzgxZjRmYy90YWJsZXJhbmdlOmMxYTk5MzI3NTViZjRjMzhiMWM3ZjkyNzJjODFmNGZjXzE4LTEtMS0xLTMzMjY3_70134e8a-c389-4546-b80e-1c2ab38fb4d1"
      unitRef="usd">5552000</us-gaap:DeferredTaxLiabilities>
    <us-gaap:DeferredTaxLiabilities
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpjMWE5OTMyNzU1YmY0YzM4YjFjN2Y5MjcyYzgxZjRmYy90YWJsZXJhbmdlOmMxYTk5MzI3NTViZjRjMzhiMWM3ZjkyNzJjODFmNGZjXzE4LTMtMS0xLTMzMjgy_14bc8747-0989-4eee-a63e-2dd355225f97"
      unitRef="usd">799000</us-gaap:DeferredTaxLiabilities>
    <us-gaap:DeferredTaxAssetsLiabilitiesNet
      contextRef="ibcf318f535e34e548d6a7a49e392f2cd_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpjMWE5OTMyNzU1YmY0YzM4YjFjN2Y5MjcyYzgxZjRmYy90YWJsZXJhbmdlOmMxYTk5MzI3NTViZjRjMzhiMWM3ZjkyNzJjODFmNGZjXzE4LTUtMS0xLTMzMjg1_cabbe735-5f30-49c8-9155-e164b90ff416"
      unitRef="usd">2139000</us-gaap:DeferredTaxAssetsLiabilitiesNet>
    <us-gaap:OperatingLossCarryforwards
      contextRef="ia9e05416c0524db5ace64c3b28a6666d_I20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90ZXh0cmVnaW9uOmIxYjQ5OWNhZmMzYjRlNDFiMjFkZGU0YTY1NzNhY2VlXzI3NDg3NzkwNzQxNzE_2c4327cd-7584-4cf2-9148-2f857d4402d0"
      unitRef="usd">1900000</us-gaap:OperatingLossCarryforwards>
    <us-gaap:TaxCreditCarryforwardAmount
      contextRef="ief5728a3af07465f901e1dea1842c397_I20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90ZXh0cmVnaW9uOmIxYjQ5OWNhZmMzYjRlNDFiMjFkZGU0YTY1NzNhY2VlXzI3NDg3NzkwNzQyOTQ_f06f5682-8b2c-4279-a817-cba60c84b34e"
      unitRef="usd">2900000</us-gaap:TaxCreditCarryforwardAmount>
    <us-gaap:SummaryOfIncomeTaxContingenciesTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90ZXh0cmVnaW9uOmIxYjQ5OWNhZmMzYjRlNDFiMjFkZGU0YTY1NzNhY2VlXzEwOTk1MTE2MzI0ODk_eafd0181-6d19-4987-9c9b-0dea88498002">&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The activity related to the unrecognized income tax benefits is as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.5pt;text-indent:18pt"&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:55.791%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.842%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.842%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.843%"/&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="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;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="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Gross unrecognized income tax benefits &#x2014; beginning balance&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,208&#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:top"/&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,369&#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:top"/&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,210&#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:top"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Increases related to tax positions taken during the current year&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;649&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;951&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;541&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Decreases related to tax positions taken during prior years&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(1,493)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;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 colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(112)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;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 colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(382)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Increases related to tax positions taken during the prior years&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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:top"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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:top"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;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:top"/&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:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Gross unrecognized income tax benefits &#x2014; ending balance&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,364&#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:top"/&gt;&lt;td colspan="3" style="background-color:#cceeff;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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,208&#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:top"/&gt;&lt;td colspan="3" style="background-color:#cceeff;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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,369&#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:top"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:SummaryOfIncomeTaxContingenciesTextBlock>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpmNjQ4ZWU5ZTM3OGE0MzVmYTBiYTYxYWMxYjM3MDIzMC90YWJsZXJhbmdlOmY2NDhlZTllMzc4YTQzNWZhMGJhNjFhYzFiMzcwMjMwXzItMS0xLTEtMjgxMDU_ed44f868-c791-4f02-bd0e-cd2d4422d694"
      unitRef="usd">3208000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="ibcf318f535e34e548d6a7a49e392f2cd_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpmNjQ4ZWU5ZTM3OGE0MzVmYTBiYTYxYWMxYjM3MDIzMC90YWJsZXJhbmdlOmY2NDhlZTllMzc4YTQzNWZhMGJhNjFhYzFiMzcwMjMwXzItMy0xLTEtMjgxMDU_821c6518-fd9f-4c6e-b914-c50f267c7d15"
      unitRef="usd">2369000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="ief144f96c0df4282b351b86950ec96f1_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpmNjQ4ZWU5ZTM3OGE0MzVmYTBiYTYxYWMxYjM3MDIzMC90YWJsZXJhbmdlOmY2NDhlZTllMzc4YTQzNWZhMGJhNjFhYzFiMzcwMjMwXzItNS0xLTEtMjgxMDU_e331d7de-ab55-4dec-9257-5c39a8aa2bf5"
      unitRef="usd">2210000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpmNjQ4ZWU5ZTM3OGE0MzVmYTBiYTYxYWMxYjM3MDIzMC90YWJsZXJhbmdlOmY2NDhlZTllMzc4YTQzNWZhMGJhNjFhYzFiMzcwMjMwXzMtMS0xLTEtMjgxMDU_0cc7f460-97ca-43cf-8304-f799ced389ad"
      unitRef="usd">649000</us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions>
    <us-gaap:UnrecognizedTaxBenefitsDecreasesResultingFromCurrentPeriodTaxPositions
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpmNjQ4ZWU5ZTM3OGE0MzVmYTBiYTYxYWMxYjM3MDIzMC90YWJsZXJhbmdlOmY2NDhlZTllMzc4YTQzNWZhMGJhNjFhYzFiMzcwMjMwXzMtMy0xLTEtMjgxMDU_ce02b465-f2e6-48c1-828d-91b89cdf5c6a"
      unitRef="usd">951000</us-gaap:UnrecognizedTaxBenefitsDecreasesResultingFromCurrentPeriodTaxPositions>
    <us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpmNjQ4ZWU5ZTM3OGE0MzVmYTBiYTYxYWMxYjM3MDIzMC90YWJsZXJhbmdlOmY2NDhlZTllMzc4YTQzNWZhMGJhNjFhYzFiMzcwMjMwXzMtNS0xLTEtMjgxMDU_9faa5cd6-3226-49bd-98c5-6f125db6805d"
      unitRef="usd">541000</us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions>
    <us-gaap:UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpmNjQ4ZWU5ZTM3OGE0MzVmYTBiYTYxYWMxYjM3MDIzMC90YWJsZXJhbmdlOmY2NDhlZTllMzc4YTQzNWZhMGJhNjFhYzFiMzcwMjMwXzQtMS0xLTEtMjgxMDU_af053b70-82c7-4abd-bb60-2e0523a917fd"
      unitRef="usd">1493000</us-gaap:UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions>
    <us-gaap:UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpmNjQ4ZWU5ZTM3OGE0MzVmYTBiYTYxYWMxYjM3MDIzMC90YWJsZXJhbmdlOmY2NDhlZTllMzc4YTQzNWZhMGJhNjFhYzFiMzcwMjMwXzQtMy0xLTEtMjgxMDU_fe541f13-7385-4524-945d-9e340a6dccde"
      unitRef="usd">112000</us-gaap:UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions>
    <us-gaap:UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpmNjQ4ZWU5ZTM3OGE0MzVmYTBiYTYxYWMxYjM3MDIzMC90YWJsZXJhbmdlOmY2NDhlZTllMzc4YTQzNWZhMGJhNjFhYzFiMzcwMjMwXzQtNS0xLTEtMjgxMDU_9dbc88f7-6198-4bdb-82ae-b4ef8f3ea140"
      unitRef="usd">382000</us-gaap:UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions>
    <us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpmNjQ4ZWU5ZTM3OGE0MzVmYTBiYTYxYWMxYjM3MDIzMC90YWJsZXJhbmdlOmY2NDhlZTllMzc4YTQzNWZhMGJhNjFhYzFiMzcwMjMwXzUtMS0xLTEtMjgxMDU_b3c14357-df7f-4f93-ab56-5d8e8dfae548"
      unitRef="usd">0</us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions>
    <us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpmNjQ4ZWU5ZTM3OGE0MzVmYTBiYTYxYWMxYjM3MDIzMC90YWJsZXJhbmdlOmY2NDhlZTllMzc4YTQzNWZhMGJhNjFhYzFiMzcwMjMwXzUtMy0xLTEtMjgxMDU_f2abfc3f-ade5-496f-a8bc-5bbb84f12d2b"
      unitRef="usd">0</us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions>
    <us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpmNjQ4ZWU5ZTM3OGE0MzVmYTBiYTYxYWMxYjM3MDIzMC90YWJsZXJhbmdlOmY2NDhlZTllMzc4YTQzNWZhMGJhNjFhYzFiMzcwMjMwXzUtNS0xLTEtMjgxMDU_5e6ef101-c83d-4071-a96e-e071bd009a12"
      unitRef="usd">0</us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpmNjQ4ZWU5ZTM3OGE0MzVmYTBiYTYxYWMxYjM3MDIzMC90YWJsZXJhbmdlOmY2NDhlZTllMzc4YTQzNWZhMGJhNjFhYzFiMzcwMjMwXzYtMS0xLTEtMzMyOTM_74a9484b-5bd3-432b-98af-5f921eaa8ecb"
      unitRef="usd">2364000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpmNjQ4ZWU5ZTM3OGE0MzVmYTBiYTYxYWMxYjM3MDIzMC90YWJsZXJhbmdlOmY2NDhlZTllMzc4YTQzNWZhMGJhNjFhYzFiMzcwMjMwXzYtMy0xLTEtMzMzMDk_af92e284-3e1c-413d-93cb-03d8ee869df2"
      unitRef="usd">3208000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="ibcf318f535e34e548d6a7a49e392f2cd_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90YWJsZTpmNjQ4ZWU5ZTM3OGE0MzVmYTBiYTYxYWMxYjM3MDIzMC90YWJsZXJhbmdlOmY2NDhlZTllMzc4YTQzNWZhMGJhNjFhYzFiMzcwMjMwXzYtNS0xLTEtMzMzMTE_cd7a0d90-83fd-4833-a0d8-d3dede480b07"
      unitRef="usd">2369000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:UnrecognizedTaxBenefitsInterestOnIncomeTaxesAccrued
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90ZXh0cmVnaW9uOmIxYjQ5OWNhZmMzYjRlNDFiMjFkZGU0YTY1NzNhY2VlXzI3NDg3NzkwNzQyNzE_7f55fffb-9530-4a50-97d0-be726b4e246e"
      unitRef="usd">100000</us-gaap:UnrecognizedTaxBenefitsInterestOnIncomeTaxesAccrued>
    <us-gaap:UnrecognizedTaxBenefitsInterestOnIncomeTaxesAccrued
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90ZXh0cmVnaW9uOmIxYjQ5OWNhZmMzYjRlNDFiMjFkZGU0YTY1NzNhY2VlXzI3NDg3NzkwNzQyNzk_01cba02b-b4b9-4844-9936-1dd94f06d545"
      unitRef="usd">300000</us-gaap:UnrecognizedTaxBenefitsInterestOnIncomeTaxesAccrued>
    <us-gaap:UnrecognizedTaxBenefitsThatWouldImpactEffectiveTaxRate
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzYvZnJhZzpiMWI0OTljYWZjM2I0ZTQxYjIxZGRlNGE2NTczYWNlZS90ZXh0cmVnaW9uOmIxYjQ5OWNhZmMzYjRlNDFiMjFkZGU0YTY1NzNhY2VlXzI3NDg3NzkwNzQyODc_bdd7623e-a3ed-4cdf-b6b9-365e1700ad45"
      unitRef="usd">2400000</us-gaap:UnrecognizedTaxBenefitsThatWouldImpactEffectiveTaxRate>
    <us-gaap:SegmentReportingDisclosureTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzkvZnJhZzo1NWZmNjU4NzVlYTg0OTZjOTkyMDNhMmRlOWVjZDFkOC90ZXh0cmVnaW9uOjU1ZmY2NTg3NWVhODQ5NmM5OTIwM2EyZGU5ZWNkMWQ4XzI2MQ_dc82fbac-9c1d-4de0-92c1-be6d25bb39b5">Segment Information &lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table represents total revenue by geographic area based on the publisher&#x2019;s billing address (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.5pt;text-indent:18pt"&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:55.791%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.842%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.842%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.843%"/&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="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;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="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;United States&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;139,049&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;96,886&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;77,314&#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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;EMEA&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;62,531&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;34,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;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;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:120%"&gt;23,642&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;APAC&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:120%"&gt;20,910&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;15,087&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;10,988&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Rest of the world&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;4,418&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2,619&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;1,927&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Total&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;226,908&#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;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;148,748&#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;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;113,871&#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;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company&#x2019;s long-lived assets, net by geographic area are summarized as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:4.5pt;text-indent:18pt"&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:70.374%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.842%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.843%"/&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:'Times New Roman',sans-serif;font-size:8pt;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="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;United States&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:'Times New Roman',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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;42,059&#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:'Times New Roman',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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;24,580&#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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Rest of the world&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;8,081&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,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;text-align:left;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;Total&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;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;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000000;padding:2px 0;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;50,140&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;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 #000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;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;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000000;padding:2px 0;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;30,044&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;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:SegmentReportingDisclosureTextBlock>
    <us-gaap:ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsByGeographicalAreasTableTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzkvZnJhZzo1NWZmNjU4NzVlYTg0OTZjOTkyMDNhMmRlOWVjZDFkOC90ZXh0cmVnaW9uOjU1ZmY2NTg3NWVhODQ5NmM5OTIwM2EyZGU5ZWNkMWQ4XzI2Mg_6b8904e9-c729-48e0-b51b-99e54dcddba5">&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table represents total revenue by geographic area based on the publisher&#x2019;s billing address (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:9.5pt;text-indent:18pt"&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:55.791%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.842%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.842%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.843%"/&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="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;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="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;United States&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;139,049&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;96,886&#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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;77,314&#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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;EMEA&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;62,531&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;34,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;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;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:120%"&gt;23,642&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;APAC&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:120%"&gt;20,910&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;15,087&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;10,988&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Rest of the world&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;4,418&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;2,619&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;1,927&#160;&lt;/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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Total&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;226,908&#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;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;148,748&#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;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;113,871&#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;&lt;div style="margin-bottom:12pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company&#x2019;s long-lived assets, net by geographic area are summarized as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:4.5pt;text-indent:18pt"&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:70.374%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.842%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.843%"/&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:'Times New Roman',sans-serif;font-size:8pt;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="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:120%"&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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;United States&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:'Times New Roman',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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;42,059&#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:'Times New Roman',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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;24,580&#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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Rest of the world&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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;8,081&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,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;text-align:left;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;Total&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;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;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000000;padding:2px 0;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;50,140&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;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 #000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;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;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000000;padding:2px 0;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;30,044&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;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:ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsByGeographicalAreasTableTextBlock>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i28cb752911f744eea288b686b76a6910_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzkvZnJhZzo1NWZmNjU4NzVlYTg0OTZjOTkyMDNhMmRlOWVjZDFkOC90YWJsZTowZGY4NjNjZTU5MTk0Y2FiOWIzMDVkYTk5ZGJkYjJmMi90YWJsZXJhbmdlOjBkZjg2M2NlNTkxOTRjYWI5YjMwNWRhOTlkYmRiMmYyXzItMS0xLTEtMjgxMDU_7cc7c6fd-d3c4-44ce-b4e9-1e5f1d12feb5"
      unitRef="usd">139049000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i45c32997023f4d42bf75b9b03118553d_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzkvZnJhZzo1NWZmNjU4NzVlYTg0OTZjOTkyMDNhMmRlOWVjZDFkOC90YWJsZTowZGY4NjNjZTU5MTk0Y2FiOWIzMDVkYTk5ZGJkYjJmMi90YWJsZXJhbmdlOjBkZjg2M2NlNTkxOTRjYWI5YjMwNWRhOTlkYmRiMmYyXzItMy0xLTEtMjgxMDU_a2ba4a01-98c6-4f36-83aa-20ff34e071e1"
      unitRef="usd">96886000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i74e446b31db2496681bbfdd6fa36abd3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzkvZnJhZzo1NWZmNjU4NzVlYTg0OTZjOTkyMDNhMmRlOWVjZDFkOC90YWJsZTowZGY4NjNjZTU5MTk0Y2FiOWIzMDVkYTk5ZGJkYjJmMi90YWJsZXJhbmdlOjBkZjg2M2NlNTkxOTRjYWI5YjMwNWRhOTlkYmRiMmYyXzItNS0xLTEtMjgxMDU_392c3b33-df84-46cc-8ab1-6f51638aecc2"
      unitRef="usd">77314000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i77566dca1dbc4edeb5cb5bca1d88614f_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzkvZnJhZzo1NWZmNjU4NzVlYTg0OTZjOTkyMDNhMmRlOWVjZDFkOC90YWJsZTowZGY4NjNjZTU5MTk0Y2FiOWIzMDVkYTk5ZGJkYjJmMi90YWJsZXJhbmdlOjBkZjg2M2NlNTkxOTRjYWI5YjMwNWRhOTlkYmRiMmYyXzMtMS0xLTEtMjgxMDU_65a4f872-e01f-4b71-a4c2-cf2ecf7540a8"
      unitRef="usd">62531000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i44fefc4c4185424eba708442f2f5f00e_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzkvZnJhZzo1NWZmNjU4NzVlYTg0OTZjOTkyMDNhMmRlOWVjZDFkOC90YWJsZTowZGY4NjNjZTU5MTk0Y2FiOWIzMDVkYTk5ZGJkYjJmMi90YWJsZXJhbmdlOjBkZjg2M2NlNTkxOTRjYWI5YjMwNWRhOTlkYmRiMmYyXzMtMy0xLTEtMjgxMDU_79867466-9ad8-42b8-a0f8-cf6cf7061712"
      unitRef="usd">34156000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ie281fb59cb6d479fb180e996b1710705_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzkvZnJhZzo1NWZmNjU4NzVlYTg0OTZjOTkyMDNhMmRlOWVjZDFkOC90YWJsZTowZGY4NjNjZTU5MTk0Y2FiOWIzMDVkYTk5ZGJkYjJmMi90YWJsZXJhbmdlOjBkZjg2M2NlNTkxOTRjYWI5YjMwNWRhOTlkYmRiMmYyXzMtNS0xLTEtMjgxMDU_e6cbb963-fbb0-439b-9d9b-2ca39448f8eb"
      unitRef="usd">23642000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i49b4abb7862146a19588e1f648987c34_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzkvZnJhZzo1NWZmNjU4NzVlYTg0OTZjOTkyMDNhMmRlOWVjZDFkOC90YWJsZTowZGY4NjNjZTU5MTk0Y2FiOWIzMDVkYTk5ZGJkYjJmMi90YWJsZXJhbmdlOjBkZjg2M2NlNTkxOTRjYWI5YjMwNWRhOTlkYmRiMmYyXzQtMS0xLTEtMjgxMDU_30133c65-59a3-43a0-b615-247b06ca2d8f"
      unitRef="usd">20910000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ib71f94f25ecd47b18e4e84bd2c3ea13a_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzkvZnJhZzo1NWZmNjU4NzVlYTg0OTZjOTkyMDNhMmRlOWVjZDFkOC90YWJsZTowZGY4NjNjZTU5MTk0Y2FiOWIzMDVkYTk5ZGJkYjJmMi90YWJsZXJhbmdlOjBkZjg2M2NlNTkxOTRjYWI5YjMwNWRhOTlkYmRiMmYyXzQtMy0xLTEtMjgxMDU_b475e9dd-87a3-4af4-a44e-5b4a18a97a67"
      unitRef="usd">15087000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i5527b3c2853e44d7b1f3ade11a938966_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzkvZnJhZzo1NWZmNjU4NzVlYTg0OTZjOTkyMDNhMmRlOWVjZDFkOC90YWJsZTowZGY4NjNjZTU5MTk0Y2FiOWIzMDVkYTk5ZGJkYjJmMi90YWJsZXJhbmdlOjBkZjg2M2NlNTkxOTRjYWI5YjMwNWRhOTlkYmRiMmYyXzQtNS0xLTEtMjgxMDU_aece6276-da14-46d2-8d54-41c97992c817"
      unitRef="usd">10988000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ia7cb367ca76448e88583727bc8bb5d13_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzkvZnJhZzo1NWZmNjU4NzVlYTg0OTZjOTkyMDNhMmRlOWVjZDFkOC90YWJsZTowZGY4NjNjZTU5MTk0Y2FiOWIzMDVkYTk5ZGJkYjJmMi90YWJsZXJhbmdlOjBkZjg2M2NlNTkxOTRjYWI5YjMwNWRhOTlkYmRiMmYyXzUtMS0xLTEtMjgxMDU_5c39530c-8ebc-4018-b567-c232b194fd3a"
      unitRef="usd">4418000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i00f6d520882b4c328b1c0eeba52a3124_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzkvZnJhZzo1NWZmNjU4NzVlYTg0OTZjOTkyMDNhMmRlOWVjZDFkOC90YWJsZTowZGY4NjNjZTU5MTk0Y2FiOWIzMDVkYTk5ZGJkYjJmMi90YWJsZXJhbmdlOjBkZjg2M2NlNTkxOTRjYWI5YjMwNWRhOTlkYmRiMmYyXzUtMy0xLTEtMjgxMDU_b20491e9-2255-4d4c-b786-109c838e6bbf"
      unitRef="usd">2619000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="id7143e63a0694563b020be78c5605502_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzkvZnJhZzo1NWZmNjU4NzVlYTg0OTZjOTkyMDNhMmRlOWVjZDFkOC90YWJsZTowZGY4NjNjZTU5MTk0Y2FiOWIzMDVkYTk5ZGJkYjJmMi90YWJsZXJhbmdlOjBkZjg2M2NlNTkxOTRjYWI5YjMwNWRhOTlkYmRiMmYyXzUtNS0xLTEtMjgxMDU_530abec5-a985-4495-939d-ab361c3f05d9"
      unitRef="usd">1927000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzkvZnJhZzo1NWZmNjU4NzVlYTg0OTZjOTkyMDNhMmRlOWVjZDFkOC90YWJsZTowZGY4NjNjZTU5MTk0Y2FiOWIzMDVkYTk5ZGJkYjJmMi90YWJsZXJhbmdlOjBkZjg2M2NlNTkxOTRjYWI5YjMwNWRhOTlkYmRiMmYyXzYtMS0xLTEtMjgxMDU_bc2c8032-96a1-4dfd-8008-44a61afd2727"
      unitRef="usd">226908000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzkvZnJhZzo1NWZmNjU4NzVlYTg0OTZjOTkyMDNhMmRlOWVjZDFkOC90YWJsZTowZGY4NjNjZTU5MTk0Y2FiOWIzMDVkYTk5ZGJkYjJmMi90YWJsZXJhbmdlOjBkZjg2M2NlNTkxOTRjYWI5YjMwNWRhOTlkYmRiMmYyXzYtMy0xLTEtMjgxMDU_b1234334-d001-4051-a648-6be18961531e"
      unitRef="usd">148748000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="iaff5c9a096224defb2035cced390f5b4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzkvZnJhZzo1NWZmNjU4NzVlYTg0OTZjOTkyMDNhMmRlOWVjZDFkOC90YWJsZTowZGY4NjNjZTU5MTk0Y2FiOWIzMDVkYTk5ZGJkYjJmMi90YWJsZXJhbmdlOjBkZjg2M2NlNTkxOTRjYWI5YjMwNWRhOTlkYmRiMmYyXzYtNS0xLTEtMjgxMDU_10ad2805-8571-4a17-8861-abff4222954e"
      unitRef="usd">113871000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:NoncurrentAssets
      contextRef="i6b959048adc1413cb57d963d25a126f0_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzkvZnJhZzo1NWZmNjU4NzVlYTg0OTZjOTkyMDNhMmRlOWVjZDFkOC90YWJsZToyOGM5YmQwNmVkYmM0NmRiYWE4OTY4OTBmZjM0N2JiOC90YWJsZXJhbmdlOjI4YzliZDA2ZWRiYzQ2ZGJhYTg5Njg5MGZmMzQ3YmI4XzItMS0xLTEtMjgxMDU_4a1f328b-b176-4813-a7ed-8b9de84f6699"
      unitRef="usd">42059000</us-gaap:NoncurrentAssets>
    <us-gaap:NoncurrentAssets
      contextRef="i92c18c22baed4f6b9da11c98b682d799_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzkvZnJhZzo1NWZmNjU4NzVlYTg0OTZjOTkyMDNhMmRlOWVjZDFkOC90YWJsZToyOGM5YmQwNmVkYmM0NmRiYWE4OTY4OTBmZjM0N2JiOC90YWJsZXJhbmdlOjI4YzliZDA2ZWRiYzQ2ZGJhYTg5Njg5MGZmMzQ3YmI4XzItMy0xLTEtMjgxMDU_b594dbbf-6c62-4aea-8f44-2bfb2c0c5a9c"
      unitRef="usd">24580000</us-gaap:NoncurrentAssets>
    <us-gaap:NoncurrentAssets
      contextRef="i7e077bb817944a919349fb346daba2f9_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzkvZnJhZzo1NWZmNjU4NzVlYTg0OTZjOTkyMDNhMmRlOWVjZDFkOC90YWJsZToyOGM5YmQwNmVkYmM0NmRiYWE4OTY4OTBmZjM0N2JiOC90YWJsZXJhbmdlOjI4YzliZDA2ZWRiYzQ2ZGJhYTg5Njg5MGZmMzQ3YmI4XzMtMS0xLTEtMjgxMDU_5e91f2b1-389c-4dd0-a739-92af4d662b83"
      unitRef="usd">8081000</us-gaap:NoncurrentAssets>
    <us-gaap:NoncurrentAssets
      contextRef="i71f984d0d11842aa945aa29e41ec9f57_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzkvZnJhZzo1NWZmNjU4NzVlYTg0OTZjOTkyMDNhMmRlOWVjZDFkOC90YWJsZToyOGM5YmQwNmVkYmM0NmRiYWE4OTY4OTBmZjM0N2JiOC90YWJsZXJhbmdlOjI4YzliZDA2ZWRiYzQ2ZGJhYTg5Njg5MGZmMzQ3YmI4XzMtMy0xLTEtMjgxMDU_f5145219-e333-47db-8d26-fcc9bca479a9"
      unitRef="usd">5464000</us-gaap:NoncurrentAssets>
    <us-gaap:NoncurrentAssets
      contextRef="if4e3cab5b2504483ac8517f68c50f1f2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzkvZnJhZzo1NWZmNjU4NzVlYTg0OTZjOTkyMDNhMmRlOWVjZDFkOC90YWJsZToyOGM5YmQwNmVkYmM0NmRiYWE4OTY4OTBmZjM0N2JiOC90YWJsZXJhbmdlOjI4YzliZDA2ZWRiYzQ2ZGJhYTg5Njg5MGZmMzQ3YmI4XzQtMS0xLTEtMjgxMDU_e869d3c5-7ef0-4f45-b427-af366fb44223"
      unitRef="usd">50140000</us-gaap:NoncurrentAssets>
    <us-gaap:NoncurrentAssets
      contextRef="i0e340c80f9c14b3bbd4dbca3b9ece7ec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xMzkvZnJhZzo1NWZmNjU4NzVlYTg0OTZjOTkyMDNhMmRlOWVjZDFkOC90YWJsZToyOGM5YmQwNmVkYmM0NmRiYWE4OTY4OTBmZjM0N2JiOC90YWJsZXJhbmdlOjI4YzliZDA2ZWRiYzQ2ZGJhYTg5Njg5MGZmMzQ3YmI4XzQtMy0xLTEtMjgxMDU_0dc200e3-f8d4-4fec-934a-5791d9e2e23c"
      unitRef="usd">30044000</us-gaap:NoncurrentAssets>
    <us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xNDIvZnJhZzo2NTIwMzkwZWM1YWU0MDI0ODk1NjQ3OWVhNjhjYzBhYy90ZXh0cmVnaW9uOjY1MjAzOTBlYzVhZTQwMjQ4OTU2NDc5ZWE2OGNjMGFjXzQ5NA_9a11613d-4fc6-4583-b5f0-bc817e2ffe30">401(k) PlanThe Company has a 401(k) Savings Plan (the &#x201c;401(k) Plan&#x201d;) that qualifies as a deferred salary arrangement under Section 401(k) of the Internal Revenue Code. Under the 401(k) Plan, participating employees may elect to contribute up to 100% of their eligible compensation, subject to certain limitations. The 401(k) Plan provides for a discretionary employer matching contribution. The Company made no matching contribution to the 401(k) Plan for the year ended December&#160;31, 2021 and December&#160;31, 2020.</us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock>
    <us-gaap:DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xNDIvZnJhZzo2NTIwMzkwZWM1YWU0MDI0ODk1NjQ3OWVhNjhjYzBhYy90ZXh0cmVnaW9uOjY1MjAzOTBlYzVhZTQwMjQ4OTU2NDc5ZWE2OGNjMGFjXzEwOTk1MTE2MjgyOTI_d7705884-4042-478e-a80b-a3f61e6e5f56"
      unitRef="number">1</us-gaap:DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent>
    <us-gaap:DefinedContributionPlanEmployerDiscretionaryContributionAmount
      contextRef="i63b559d21ca64bf3adcc381ac42ac5c1_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xNDIvZnJhZzo2NTIwMzkwZWM1YWU0MDI0ODk1NjQ3OWVhNjhjYzBhYy90ZXh0cmVnaW9uOjY1MjAzOTBlYzVhZTQwMjQ4OTU2NDc5ZWE2OGNjMGFjXzk4OTU2MDQ2NTA0OTI_0e7398a4-299e-4bcb-8b64-c39d100a3857"
      unitRef="usd">0</us-gaap:DefinedContributionPlanEmployerDiscretionaryContributionAmount>
    <us-gaap:DefinedContributionPlanEmployerDiscretionaryContributionAmount
      contextRef="ie0bc9ac5564a4efbbf7b8eabafd87d5f_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmViNDZiNDY3YmNlMjRkNmZhNmExN2FhNzY1NzJkNWVmL3NlYzplYjQ2YjQ2N2JjZTI0ZDZmYTZhMTdhYTc2NTcyZDVlZl8xNDIvZnJhZzo2NTIwMzkwZWM1YWU0MDI0ODk1NjQ3OWVhNjhjYzBhYy90ZXh0cmVnaW9uOjY1MjAzOTBlYzVhZTQwMjQ4OTU2NDc5ZWE2OGNjMGFjXzk4OTU2MDQ2NTA0OTI_b306fff9-14c1-41a2-bb8a-8f2e59ee4c7c"
      unitRef="usd">0</us-gaap:DefinedContributionPlanEmployerDiscretionaryContributionAmount>
</xbrl>
