XML 27 R16.htm IDEA: XBRL DOCUMENT
v3.19.2

Revenue Recognition | 6 Months Ended
--- | ---
Jun. 30, 2019
Revenue Recognition [Abstract] |
Revenue Recognition | Note 10 - Revenue Recognition Verification and Certification Segment We offer a range of products and services to maintain identification, traceability, and verification systems. We conduct both on-site and desk audits to verify that claims being made about livestock, food, other high-value specialty crops and agricultural products are accurate. We generate revenue primarily from the sale of our verification solutions, consulting services and hardware sales. We sell our products and services directly to customers at various levels in the livestock and agricultural supply chains. Verification and certification service revenue primarily consists of fees charged for verification audits and other verification services that the Company performs for customers. A more detailed summary of our verification and certification services is included in the subsections below. Animal Verification and Certification Services Our animal verification and certification services contracts are generally structured in one of the following ways: (i) we commit to perform the required number of animal audits to verify a customer’s compliance with a standard or claim, or (ii) we commit to perform animal audit services at a fixed price by site or location type as requested by our customer during an annual period. These contract structures are discussed in more detail in the subsections below. Contract to Provide Required Number of Animal Audit Services For certain of our animal verification and certification services, we commit to perform the required number of location or site audits within our customer’s supply chain to verify customer’s compliance with a contractually-specified standard or claim. Each location or site audit is typically very short-term in nature, with a typical duration of one to two weeks. Upon completion of an audit, we provide the customer with an audit verification report for the specific site or location that was audited. Payment is made by customer upon completion of each site or location audit. We generally enter into revenue contracts with a one-year term. Our customers generally have the right to terminate the contract without prejudice with thirty days’ written notice. We have determined that, as a result of the termination provisions present in these contracts, the accounting contract term is a thirty-day period, with each thirty-day time increment representing a separate accounting contract under ASC 606. Furthermore, we have concluded that there is a single performance obligation that is a series comprised of each distinct location or site audit performed. Our customers are charged a standard daily rate for the provision of an audit based on the scale of site operations and geographical location. Consideration attributable to each audit within the series is variable, as the number of days required to complete each audit is not known until performance of that audit occurs. We have concluded that it is appropriate to allocate variable consideration (that is, the number of days required to complete an audit) to each audit within the series. This is because the consideration that we earn for each audit relates specifically to our efforts to transfer to our customer that discrete audit, and the resulting audit opinion or verification report, for that specified site or location, and this allocation is consistent with the allocation objective as defined in ASC 606. As a result, instances in which the Company evaluates and applies the constraint on variable consideration are immaterial. We further concluded that over-time recognition is appropriate because: (i) our performance of audits does not create an asset with an alternative use, as the audit and related verification report relates to facts and circumstances that are specific to each customer site or location (that is, there is a practical limitation on our ability to readily direct the asset to another customer) and (ii) we have an enforceable right to payment, inclusive of a reasonable profit, for performance completed to date. We utilize an input method to measure over-time progress of each audit within the series based on the number of audit days performed. We do, however, note that there are instances in which we only have an enforceable right to payment upon completion of an audit, and thus, over-time recognition is not permitted. For these contracts, revenue is recognized at the point in time at which an audit is completed. This does not result in a significant difference in the timing of revenue recognition (as compared to those audits that are recognized over time) due to the very short-term duration of an audit. Our customers may also have the option to purchase incremental review services (for example, an investigative audit or video review services) that are unrelated to the audit services to verify compliance with a specified standard or claim. The incremental review services are also typically very short-term in nature (that is, one to two weeks). We have concluded that these optional purchases do not reflect a material right under ASC 606 because the incremental review services are performed at standard pricing that would be charged to other similarly situated customers. Upon customer request for an incremental review service, we believe that our customer has made a discrete purchasing decision that should be treated as a separate accounting contract under ASC 606. We charge a fixed fee for the incremental review service, and thus, upon customer request, we are entitled to fixed consideration for that service under ASC 606. We concluded that over-time revenue recognition is appropriate for incremental review services because: (i) our performance of incremental review services does not create an asset with an alternative use because that review service, and the associated customer deliverable, relates to facts and circumstances that are specific to each customer site or location (that is, there is a practical limitation on our ability to readily direct the asset to another customer) and (ii) we have an enforceable right to payment, inclusive of a reasonable profit, for performance completed to date on incremental review services. We utilize a time-based input method to measure progress toward complete satisfaction of an incremental review service, which is based on the number of hours performed on the incremental review service relative to the total number of hours required to complete that review service. As previously mentioned, our incremental review services are typically completed within one to two weeks of a customer request. Contract to Provide Animal Audit Services at Customer Request Other animal verification and certification services contracts are structured such that we commit to perform audit services at a fixed price by site or location type as requested by our customer during an annual period. Performance of an audit typically occurs within a one to two-week period. We invoice our customer upon completion of an audit, and payment is due from customer within thirty days or less of receipt of invoice. Under this contract structure, the customer is, in effect, provided a pricing list for animal audit services, and pricing is effective over a one-year period. We have concluded that enforceable rights and obligations do not arise until a customer actually engages us to perform an audit service documented in the pricing list; therefore, each customer request represents a purchasing decision that is a separate accounting contract under ASC 606. We note that the termination provisions specified in our pricing lists vary. In certain instances, a customer may only have the right to terminate in the event of non-performance. Alternatively, in other contracts, a customer may have the right to terminate without prejudice at any time or with thirty days’ written notice. However, regardless of the termination provision specified, we have concluded that the accounting contract term is equal to the duration of the requested audit service (that is, the termination provisions generally do not affect the accounting contract term for each requested audit service). Upon a customer’s request for an audit service, consideration is fixed, as we charge the customer a fixed fee by audit type over the annual period per the pricing list. We concluded that over-time revenue recognition is appropriate for a requested audit service because: (i) our performance of the requested audit service does not create an asset with an alternative use as that audit, and the associated audit report, relate to facts and circumstances that are specific to each customer site or location (that is, there is a practical limitation on our ability to readily direct the asset to another customer) and (ii) we have an enforceable right to payment, inclusive of a reasonable profit, for performance completed to date on a requested audit. A time-based input method is utilized to measure progress toward complete satisfaction of an audit based on the number of hours performed on that audit relative to the total number of hours expected to be required to complete the audit. As previously mentioned, our audit services are typically completed within one to two weeks of a customer request. Other Considerations for Animal Certification and Verification Services In connection with the provision of on-site audits related to animal certification and verification services, reimbursable expenses are incurred and billed to customers, and such amounts are recognized on a gross basis as both revenue and cost of revenue. Any amounts collected on behalf of a third-party and remitted in full to that third-party are excluded from the transaction price and, thus, revenue. Crop and Other Processed Product Verification and Certification Services Third-party crop and other processed product audits are generally structured such that we commit to perform an independent audit to verify that food producers and/or farmers comply with certain standards. We generally provide verification services related to organic, Non-GMO and gluten-free standards. Depending on the crop or product type, verification audit activities may take two months to one year to complete. During this assessment period, various integrated audit activities and/or input reviews are performed in accordance with the regulations specified by the relevant standard. The fee structure is such that customers pay an annual assessment fee for a crop or other processed product to verify compliance with the specified standard. This fee is payable upfront on a nonrefundable basis. Our customers can typically terminate a crop or other processed product audit at any time without prejudice. However, given the nonrefundable upfront payment structure for the annual assessment service, we have concluded that the contract term is one year. We record the upfront payment made by the customer for the annual assessment service as deferred revenue. The audit activities and input reviews required in the provision of an annual assessment are not distinct under ASC 606, and consequently, we account for an annual assessment as a single integrated performance obligation. For certain of our third-party crop and other processed product audits, the annual assessment fee is fixed for the annual period. In other scenarios, the annual assessment fee may be variable due to increased review activities required for incremental inputs to a crop or processed product identified through the assessment process. At the time that an incremental input is identified, which generally occurs in the early stages of an annual assessment, the incremental consideration for the provision of review services related to that incremental input also becomes known. We allocate the transaction price derived from the annual assessment fee to the single integrated performance obligation for that annual assessment. Revenue related to the annual assessment is recognized over time in accordance with ASC 606. This is because the annual assessment service does not create an asset with an alternative use, as it relates to facts and circumstances that are specific to a customer’s crop or processed product. Further, we have an enforceable right to payment for performance completed to date on the annual assessment due to the nonrefundable upfront payment made by customer. We utilize an input method to measure progress toward satisfaction of the annual assessment based on the percentage of activities/phases or input reviews completed under the annual assessment. As it relates to the upfront payment for the annual assessment, we have utilized the practical expedient that exempts us from adjusting consideration for the effects of a significant financing component when we expect that the period between customer payment and the provision of the related service is one year or less. In certain contracts, an independent third-party inspection may be required for a site or location in our customer’s supply chain in accordance with the regulations for a specified standard. An inspection is performed by an independent third-party inspector, and the customer is charged an hourly rate for these inspection services. Under this scenario, a separate accounting contract arises upon initiation and performance of an inspection, and we typically invoice our customer for the inspection upon completion of the inspection service. Given that the customer has the ability to terminate at any time without prejudice, we have concluded that the contract term for each inspection ends as control of an inspection service transfers. Inspections are generally short-term in nature with a term ranging from a few days to two weeks. We have further determined that inspections are distinct from an annual assessment. Consideration attributable to an inspection is variable, as the inspector is only able to provide a high-level estimate of the cost of the inspection based on the inspector’s hourly rate until the inspector is at the relevant producer/supplier site to determine the time and level of effort required to complete the inspection. Given the very short-term nature of an inspection, variability related to an inspection generally resolves itself within a reporting period. However, we are typically required by certain regulations to provide an inspection cost estimate to our customer, and, if required, we utilize that estimate as our estimate of variable consideration. The cost estimate is generally derived from the cost to perform the prior-year inspection for that specific customer site or location or, when required, the historical cost to provide an inspection for a comparable site or location. In our experience, the historical cost of inspections has been predictive of the future cost of an inspection. Other Considerations for Crop and Other Processed Product Verification Services Reimbursable expenses incurred in the provision of an annual assessment or required inspection are billed to our customers, and such amounts are recognized on a gross basis as both revenue and cost of revenue. In addition, any amounts collected on behalf of a third-party and remitted in full to that third-party are excluded from the transaction price and, thus, revenue. Product Sales Product sales are primarily generated from the sale of cattle identification ear tags. Each customer purchase request represents a purchasing decision made by customer. As such, enforceable rights and obligations (and, thus, a separate accounting contract under ASC 606) arise at the time a customer submits its purchase request to us. At the time of request, we are entitled to fixed consideration, as the sales quantity and related price of the product is known. All of our customers are charged the same fixed price per tag. Revenue for product sales is recognized upon delivery of the goods to customer, at which point title, custody and risk of loss transfer to the customer. We typically deliver product to the customer within a few days of customer’s sales request. At the time of delivery, we invoice our customer for the related product sales and record invoiced amounts to accounts receivable. Payment is typically due by customer upon receipt of invoice. In relation to our product sales, the sales taxes collected from customers and remitted to government authorities are excluded from revenue. Additionally, we do not typically provide right of return or warranty on product sales. Software Sales and Related Consulting Segment We predominately offer software products via a SaaS model, which is an annual subscription-based model. Support services are generally included in the subscription. We also provide web-hosting services on an annual basis to all of our customers in conjunction with their software subscription. Customers have the ability to terminate without prejudice upon thirty days’ written notice; however, the subscription fee, inclusive of maintenance and support services, and the web-hosting fee are paid upfront by the customer on a nonrefundable basis. Consequently, we have concluded that the contract term for the annual software subscription and web-hosting services is one year. We have determined that a software license subscription and the related hosting service should be accounted for as a service transaction, as we provide the functionality of our software through the hosting arrangement. The SaaS arrangement provides customers with unlimited access to our software and, thus, is accounted for as a series of distinct daily service periods that provide substantially the same service (that is, continuous access to the hosted software) each day during the annual contract term. Further, the provision of basic technical support services also represents a stand-ready obligation that is a series of distinct daily service periods that provide substantially the same service (that is, access to our technical support infrastructure) during the annual contract term. Because the basic technical support services and SaaS each represent performance obligations that are a series of distinct daily service periods, we have elected to combine these performance obligations. We are entitled to fixed consideration for the software license subscription, inclusive of support services, and the related hosting service. The software license subscription and hosting fees in our contracts represent the standalone selling price for that related service. This is because the fees charged for the software license subscription and hosting service represent the software license subscription and hosting service fees that are charged to other customers with a similar level of data loaded into the software (regardless of whether that customer contracts for professional services). Accordingly, the software license subscription and hosting fees are allocated to the combined SaaS performance obligation. We recognize revenue related to the SaaS arrangement over time because a customer simultaneously receives and consumes the benefit from the provision of access to the hosted software over the annual subscription period. Accordingly, we utilize a time-based output measure of progress that results in a straight-line attribution of revenue. That is, revenue related to the combined SaaS obligation should be recognized daily on a straight-line basis over the one-year subscription term, as this reflects the direct measurement of value to a customer of the provision of access to the software via hosting each day. As it relates to the upfront payment for the software subscription and hosting service, we have utilized the practical expedient that exempts us from adjusting consideration for the effects of a significant financing component when we expect that the period between customer payment and the provision of the related service is one year or less. In addition, we record the upfront payment made by customer for the annual assessment service as deferred revenue. In some of our SaaS contracts, we also provide software-related consulting services to our customers during an annual software subscription period. Consulting services fees are derived from a standard rate card by employee level, and we invoice for consulting services monthly on a time-incurred basis. Due to the termination provisions present in our SaaS contracts, our customers have an in-substance renewal decision each month for further consulting services (that is, via their decision not to terminate the contract each month). Accordingly, the contract term for consulting services is on a month-to-month basis within the annual subscription period. We have concluded that consulting services are distinct from the SaaS arrangement. To the extent that consulting services result in a software enhancement or new functionality, we have determined that those consulting services are still distinct because added features typically provide new, discrete capabilities with independent value to a customer and a customer accesses the SaaS in a single-tenant architecture. Further, additional features and functionality are often made available to a customer substantially after the “go-live” date of the software (via the hosting service). As a result, our software-related consulting services represent distinct performance obligations. We recognize revenue over time in accordance with ASC 606. This is because our performance does not create an asset with an alternative use, as consulting services, and, if applicable, any related software enhancements, are highly tailored to the farming industry specific to the given customer, and we have an enforceable right to payment, inclusive of profit, for performance completed to date. As a result, for our consulting services, we have elected to utilize the practical expedient that allows us to recognize revenue in the amount to which we have a right to invoice, as we believe that we have a right to consideration from a customer in an amount that corresponds directly with the value to the customer of our performance completed to date for the provision of consulting services. Principal versus Agent Considerations Under certain of our verification and certification service contracts, a third-party inspector may be required to perform an independent inspection of a site or location within our customer’s supply chain in accordance with regulations of a certain standard or claim. In this scenario, we have concluded that we are the principal in the provision of inspection services to our customer, as we control the inspection service, and the related inspection report, before it is transferred to our customer. In accordance with this conclusion, we present revenue related to inspections on a gross basis, with customer payment for an inspection presented as revenue and the inspection cost paid to the third-party inspector presented as an expense. In addition, we utilize a third-party to provide web-hosting services in the provision of our SaaS arrangements. In this scenario, we are primarily responsible for fulfilling the promise to provide web-hosting services to the customer, and we establish the fee that the customer is charged for the web-hosting services. Consequently, we have also concluded that we are the principal in the provision of web-hosting services under our SaaS arrangements. As such, we present revenue on a gross basis, with consideration received from our customer for the web-hosting service recorded as revenue and the cost paid to the third-party to provide those web-hosting services recorded as an expense. Disaggregation of Revenue We have identified four material revenue categories in our business: (i) verification and certification service revenue, (ii) product sales, (iii) software license, maintenance and support services revenue and (iv) software-related consulting service revenue. Revenue attributable to each of our identified revenue categories is disaggregated in the table below.
|  | Three months ended June 30, 2019 |  |  | Three months ended June 30, 2018 |
|  | Verification and Certification Segment |  |  | Software Sales and Related Consulting Segment |  |  | Eliminations and Other |  |  | Consolidated Totals |  |  | Verification and Certification Segment |  |  | Software Sales and Related Consulting Segment |  |  | Eliminations and Other |  |  | Consolidated Totals |
Revenues: |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
Verification and certification service revenue |  | $ | 3,743,241 |  |  | $ | — |  |  | $ | — |  |  | $ | 3,743,241 |  |  | $ | 3,507,757 |  |  | $ | — |  |  | $ | — |  |  | $ | 3,507,757 |
Product sales |  |  | 635,333 |  |  |  | — |  |  |  | — |  |  |  | 635,333 |  |  |  | 496,312 |  |  |  | — |  |  |  | — |  |  |  | 496,312 |
Software license, maintenance and support services revenue |  |  | — |  |  |  | 338,674 |  |  |  | (38,740 | ) |  |  | 299,934 |  |  |  | — |  |  |  | 263,316 |  |  |  | — |  |  |  | 263,316 |
Software-related consulting service revenue |  |  | — |  |  |  | 242,808 |  |  |  | (33,057 | ) |  |  | 209,751 |  |  |  | — |  |  |  | 170,923 |  |  |  | — |  |  |  | 170,923 |
Total revenues |  | $ | 4,378,574 |  |  | $ | 581,482 |  |  | $ | (71,797 | ) |  | $ | 4,888,259 |  |  | $ | 4,004,069 |  |  | $ | 434,239 |  |  | $ | — |  |  | $ | 4,438,308 |
|  | Six months ended June 30, 2019 |  |  | Six months ended June 30, 2018 |
|  | Verification and Certification Segment |  |  | Software Sales and Related Consulting Segment |  |  | Eliminations and Other |  |  | Consolidated Totals |  |  | Verification and Certification Segment |  |  | Software Sales and Related Consulting Segment |  |  | Eliminations and Other |  |  | Consolidated Totals |
Revenues: |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
Verification and certification service revenue |  | $ | 6,554,935 |  |  | $ | — |  |  | $ | — |  |  | $ | 6,554,935 |  |  | $ | 6,303,951 |  |  | $ | — |  |  | $ | — |  |  | $ | 6,303,951 |
Product sales |  |  | 1,276,391 |  |  |  | — |  |  |  | — |  |  |  | 1,276,391 |  |  |  | 850,206 |  |  |  | — |  |  |  | — |  |  |  | 850,206 |
Software license, maintenance and support services revenue |  |  | — |  |  |  | 682,240 |  |  |  | (87,277 | ) |  |  | 594,963 |  |  |  | — |  |  |  | 550,760 |  |  |  | — |  |  |  | 550,760 |
Software-related consulting service revenue |  |  | — |  |  |  | 464,031 |  |  |  | (47,521 | ) |  |  | 416,510 |  |  |  | — |  |  |  | 354,193 |  |  |  | — |  |  |  | 354,193 |
Total revenues |  | $ | 7,831,326 |  |  | $ | 1,146,271 |  |  | $ | (134,798 | ) |  | $ | 8,842,799 |  |  | $ | 7,154,157 |  |  | $ | 904,953 |  |  | $ | — |  |  | $ | 8,059,110 |
Transaction Price Allocated to Remaining Performance Obligations We generally enter into revenue contracts with a one-year term. In certain instances, we have concluded that our contract term is less than one year because: (i) the termination provisions present in the contract impact the contract term under ASC 606 or (ii) a contract under ASC 606 arises at the time our customer requests the provision of a good or service that is delivered within or over a few days to a couple of weeks. As a result of our short-term contract structures, we have utilized the practical expedient in ASC 606-10-50-14 that exempts us from disclosure of the transaction price allocated to remaining performance obligations if the performance obligation is part of a contract that has an original expected duration of one year or less. Contract Balances Under our animal verification and certification services contracts, we invoice customers once the performance obligation for the provision of a site or location audit has been satisfied, at which point payment is unconditional. In addition, any product sales are invoiced upon delivery to the customer, at which point payment is also unconditional. Accordingly, our animal verification and certification services contracts do not give rise to a contract asset under ASC 606; rather, invoiced amounts reflect accounts receivable. Under our crop and other processed product verification and certification services, a nonrefundable payment for an annual assessment of compliance with a standard is typically made by our customers upfront upon contract execution. That is, payment is made in advance of the provision of annual assessment services. Accordingly, we recognize deferred revenue upon receipt of the upfront payment from our customers for crop and other processed product audit assessment services. Revenue is subsequently recognized, and the related deferred revenue is reduced, over the one-year period during which assessment services are provided to the customer using the over-time measure of progress selected in accordance with ASC 606. To the extent that an inspection is required during the annual assessment period, we invoice customers once the performance obligation for the inspection has been satisfied, at which point payment is unconditional. As such, inspection services give rise to accounts receivable. Our software subscriptions, web-hosting, and support services are paid by our customers upfront on a nonrefundable basis. That is, payment is made in advance of the provision of these services to our customers. As a result, we recognize deferred revenue upon receipt of the upfront payment from our customers for software subscriptions, web-hosting and maintenance and support services. Revenue is subsequently recognized, and the related deferred revenue is reduced, on a straight-line basis during the annual contract term that these stand-ready services are provided to customer. Software-related consulting services are invoiced monthly on a time-incurred basis, at which point we have an enforceable right to payment for those services. Because payment is unconditional upon invoicing, our software-related consulting services are reflected as accounts receivable. As of June 30, 2019, and December 31, 2018, accounts receivable from contracts with customers, net of allowance for doubtful accounts, were approximately $2,632,400 and $2,205,200, respectively. As of June 30, 2019, and December 31, 2018, deposits and deferred revenue from contracts with customers were approximately $1,255,500 and $727,900, respectively. The balance of the contract liabilities at June 30, 2019 and December 31, 2018 are expected to be recognized as revenue within one year or less of the invoice date. The following table reflects the changes in our contract liabilities during the three month period ended June 30, 2019:
Deferred revenue: |  |  |  |
Unearned revenue March 31, 2019 |  | $ | 1,274,032 |
Unearned billings |  |  | 515,138 |
Revenue recognized |  |  | (646,012 | )
Unearned revenue June 30, 2019 |  | $ | 1,143,158 |
The following table reflects the changes in our contract liabilities during the six month period ended June 30, 2019:
Deferred revenue: |  |  |
Unearned revenue January 1, 2019 |  | $ | 654,872 |
Unearned billings |  |  | 1,753,172 |
Revenue recognized |  |  | (1,264,886 | )
Unearned revenue June 30, 2019 |  | $ | 1,143,158 |
Costs to fulfill a contract Prior to August 2018, we incurred a fixed cost, payable to JVF Consulting, LLC, a third-party provider, to perform set-up activities for new (or first-year) customers that contract for our software subscription and hosting services. As previously discussed in Note 2, on August 30, 2018, we acquired JVF Consulting, which included three key employees. We concluded that those set-up activities performed by JVF did not transfer a good or service as defined in ASC 606 to our customers. We capitalize fixed set-up costs as an asset on the following basis: (i) the fixed set-up costs incurred relate specifically to a customer contract for our software subscription and hosting service, (ii) the fixed set-up costs incurred are expected to be recovered via provision of the software subscription and hosting service to that customer and (iii) the set-up costs generate or enhance resources of the Company by permitting us to provide software subscription and hosting services to our customer, which, in turn, generates revenues. Capitalized costs related to those set-up activities are amortized on a straight-line basis over the one-year license subscription and hosting period. The ending balance at June 30, 2019 and December 31, 2018 of capitalized assets attributable to the set-up costs incurred to fulfill software subscription and hosting contracts was not material. No set-up costs related to our software subscription and hosting services were incurred for the three months ended June 30, 2019 or the year-ended December 31, 2018. In addition, amortization of capitalized set-up costs for the three months ended June 30, 2019 or the year ended December 31, 2018 was not material, and no impairment loss was incurred related to capitalized set-up costs. Commissions and other costs to obtain a contract are expensed as incurred as our contracts are typically completed in one year or less, and where applicable, we generally would incur these costs whether or not we ultimately obtain the contract.

X
- Definition The entire disclosure of revenue from contract with customer to transfer good or service and to transfer nonfinancial asset. Includes, but is not limited to, disaggregation of revenue, credit loss recognized from contract with customer, judgment and change in judgment related to contract with customer, and asset recognized from cost incurred to obtain or fulfill contract with customer. Excludes insurance and lease contracts. + References Reference 1: http://www.xbrl.org/2003/role/disclosureRef -Publisher FASB -Name Accounting Standards Codification -Topic 606 -URI http://asc.fasb.org/topic&trid=49130388 + Details
Name: | us-gaap_RevenueFromContractWithCustomerTextBlock
Namespace Prefix: | us-gaap_
Data Type: | nonnum:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- References No definition available. + Details
Name: | us-gaap_RevenueRecognitionAbstract
Namespace Prefix: | us-gaap_
Data Type: | xbrli:stringItemType
Balance Type: | na
Period Type: | duration