You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					355 lines
				
				8.3 KiB
			
		
		
			
		
	
	
					355 lines
				
				8.3 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								'use strict'
							 | 
						||
| 
								 | 
							
								// eslint-disable-next-line
							 | 
						||
| 
								 | 
							
								if (typeof $1 !== 'undefined') $1 = arguments.callee.caller.arguments[0]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const test = require('tape')
							 | 
						||
| 
								 | 
							
								const fresh = require('import-fresh')
							 | 
						||
| 
								 | 
							
								const pino = require('../browser')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const parentSerializers = {
							 | 
						||
| 
								 | 
							
								  test: () => 'parent'
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const childSerializers = {
							 | 
						||
| 
								 | 
							
								  test: () => 'child'
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('serializers override values', ({ end, is }) => {
							 | 
						||
| 
								 | 
							
								  const parent = pino({
							 | 
						||
| 
								 | 
							
								    serializers: parentSerializers,
							 | 
						||
| 
								 | 
							
								    browser: {
							 | 
						||
| 
								 | 
							
								      serialize: true,
							 | 
						||
| 
								 | 
							
								      write (o) {
							 | 
						||
| 
								 | 
							
								        is(o.test, 'parent')
							 | 
						||
| 
								 | 
							
								        end()
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  parent.fatal({ test: 'test' })
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('without the serialize option, serializers do not override values', ({ end, is }) => {
							 | 
						||
| 
								 | 
							
								  const parent = pino({
							 | 
						||
| 
								 | 
							
								    serializers: parentSerializers,
							 | 
						||
| 
								 | 
							
								    browser: {
							 | 
						||
| 
								 | 
							
								      write (o) {
							 | 
						||
| 
								 | 
							
								        is(o.test, 'test')
							 | 
						||
| 
								 | 
							
								        end()
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  parent.fatal({ test: 'test' })
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if (process.title !== 'browser') {
							 | 
						||
| 
								 | 
							
								  test('if serialize option is true, standard error serializer is auto enabled', ({ end, same }) => {
							 | 
						||
| 
								 | 
							
								    const err = Error('test')
							 | 
						||
| 
								 | 
							
								    err.code = 'test'
							 | 
						||
| 
								 | 
							
								    err.type = 'Error' // get that cov
							 | 
						||
| 
								 | 
							
								    const expect = pino.stdSerializers.err(err)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    const consoleError = console.error
							 | 
						||
| 
								 | 
							
								    console.error = function (err) {
							 | 
						||
| 
								 | 
							
								      same(err, expect)
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    const logger = fresh('../browser')({
							 | 
						||
| 
								 | 
							
								      browser: { serialize: true }
							 | 
						||
| 
								 | 
							
								    })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    console.error = consoleError
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    logger.fatal(err)
							 | 
						||
| 
								 | 
							
								    end()
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  test('if serialize option is array, standard error serializer is auto enabled', ({ end, same }) => {
							 | 
						||
| 
								 | 
							
								    const err = Error('test')
							 | 
						||
| 
								 | 
							
								    err.code = 'test'
							 | 
						||
| 
								 | 
							
								    const expect = pino.stdSerializers.err(err)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    const consoleError = console.error
							 | 
						||
| 
								 | 
							
								    console.error = function (err) {
							 | 
						||
| 
								 | 
							
								      same(err, expect)
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    const logger = fresh('../browser', require)({
							 | 
						||
| 
								 | 
							
								      browser: { serialize: [] }
							 | 
						||
| 
								 | 
							
								    })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    console.error = consoleError
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    logger.fatal(err)
							 | 
						||
| 
								 | 
							
								    end()
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  test('if serialize option is array containing !stdSerializers.err, standard error serializer is disabled', ({ end, is }) => {
							 | 
						||
| 
								 | 
							
								    const err = Error('test')
							 | 
						||
| 
								 | 
							
								    err.code = 'test'
							 | 
						||
| 
								 | 
							
								    const expect = err
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    const consoleError = console.error
							 | 
						||
| 
								 | 
							
								    console.error = function (err) {
							 | 
						||
| 
								 | 
							
								      is(err, expect)
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    const logger = fresh('../browser', require)({
							 | 
						||
| 
								 | 
							
								      browser: { serialize: ['!stdSerializers.err'] }
							 | 
						||
| 
								 | 
							
								    })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    console.error = consoleError
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    logger.fatal(err)
							 | 
						||
| 
								 | 
							
								    end()
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  test('in browser, serializers apply to all objects', ({ end, is }) => {
							 | 
						||
| 
								 | 
							
								    const consoleError = console.error
							 | 
						||
| 
								 | 
							
								    console.error = function (test, test2, test3, test4, test5) {
							 | 
						||
| 
								 | 
							
								      is(test.key, 'serialized')
							 | 
						||
| 
								 | 
							
								      is(test2.key2, 'serialized2')
							 | 
						||
| 
								 | 
							
								      is(test5.key3, 'serialized3')
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    const logger = fresh('../browser', require)({
							 | 
						||
| 
								 | 
							
								      serializers: {
							 | 
						||
| 
								 | 
							
								        key: () => 'serialized',
							 | 
						||
| 
								 | 
							
								        key2: () => 'serialized2',
							 | 
						||
| 
								 | 
							
								        key3: () => 'serialized3'
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								      browser: { serialize: true }
							 | 
						||
| 
								 | 
							
								    })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    console.error = consoleError
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    logger.fatal({ key: 'test' }, { key2: 'test' }, 'str should skip', [{ foo: 'array should skip' }], { key3: 'test' })
							 | 
						||
| 
								 | 
							
								    end()
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  test('serialize can be an array of selected serializers', ({ end, is }) => {
							 | 
						||
| 
								 | 
							
								    const consoleError = console.error
							 | 
						||
| 
								 | 
							
								    console.error = function (test, test2, test3, test4, test5) {
							 | 
						||
| 
								 | 
							
								      is(test.key, 'test')
							 | 
						||
| 
								 | 
							
								      is(test2.key2, 'serialized2')
							 | 
						||
| 
								 | 
							
								      is(test5.key3, 'test')
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    const logger = fresh('../browser', require)({
							 | 
						||
| 
								 | 
							
								      serializers: {
							 | 
						||
| 
								 | 
							
								        key: () => 'serialized',
							 | 
						||
| 
								 | 
							
								        key2: () => 'serialized2',
							 | 
						||
| 
								 | 
							
								        key3: () => 'serialized3'
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								      browser: { serialize: ['key2'] }
							 | 
						||
| 
								 | 
							
								    })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    console.error = consoleError
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    logger.fatal({ key: 'test' }, { key2: 'test' }, 'str should skip', [{ foo: 'array should skip' }], { key3: 'test' })
							 | 
						||
| 
								 | 
							
								    end()
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  test('serialize filter applies to child loggers', ({ end, is }) => {
							 | 
						||
| 
								 | 
							
								    const consoleError = console.error
							 | 
						||
| 
								 | 
							
								    console.error = function (binding, test, test2, test3, test4, test5) {
							 | 
						||
| 
								 | 
							
								      is(test.key, 'test')
							 | 
						||
| 
								 | 
							
								      is(test2.key2, 'serialized2')
							 | 
						||
| 
								 | 
							
								      is(test5.key3, 'test')
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    const logger = fresh('../browser', require)({
							 | 
						||
| 
								 | 
							
								      browser: { serialize: ['key2'] }
							 | 
						||
| 
								 | 
							
								    })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    console.error = consoleError
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    logger.child({
							 | 
						||
| 
								 | 
							
								      aBinding: 'test'
							 | 
						||
| 
								 | 
							
								    }, {
							 | 
						||
| 
								 | 
							
								      serializers: {
							 | 
						||
| 
								 | 
							
								        key: () => 'serialized',
							 | 
						||
| 
								 | 
							
								        key2: () => 'serialized2',
							 | 
						||
| 
								 | 
							
								        key3: () => 'serialized3'
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }).fatal({ key: 'test' }, { key2: 'test' }, 'str should skip', [{ foo: 'array should skip' }], { key3: 'test' })
							 | 
						||
| 
								 | 
							
								    end()
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  test('serialize filter applies to child loggers through bindings', ({ end, is }) => {
							 | 
						||
| 
								 | 
							
								    const consoleError = console.error
							 | 
						||
| 
								 | 
							
								    console.error = function (binding, test, test2, test3, test4, test5) {
							 | 
						||
| 
								 | 
							
								      is(test.key, 'test')
							 | 
						||
| 
								 | 
							
								      is(test2.key2, 'serialized2')
							 | 
						||
| 
								 | 
							
								      is(test5.key3, 'test')
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    const logger = fresh('../browser', require)({
							 | 
						||
| 
								 | 
							
								      browser: { serialize: ['key2'] }
							 | 
						||
| 
								 | 
							
								    })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    console.error = consoleError
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    logger.child({
							 | 
						||
| 
								 | 
							
								      aBinding: 'test',
							 | 
						||
| 
								 | 
							
								      serializers: {
							 | 
						||
| 
								 | 
							
								        key: () => 'serialized',
							 | 
						||
| 
								 | 
							
								        key2: () => 'serialized2',
							 | 
						||
| 
								 | 
							
								        key3: () => 'serialized3'
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }).fatal({ key: 'test' }, { key2: 'test' }, 'str should skip', [{ foo: 'array should skip' }], { key3: 'test' })
							 | 
						||
| 
								 | 
							
								    end()
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  test('parent serializers apply to child bindings', ({ end, is }) => {
							 | 
						||
| 
								 | 
							
								    const consoleError = console.error
							 | 
						||
| 
								 | 
							
								    console.error = function (binding) {
							 | 
						||
| 
								 | 
							
								      is(binding.key, 'serialized')
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    const logger = fresh('../browser', require)({
							 | 
						||
| 
								 | 
							
								      serializers: {
							 | 
						||
| 
								 | 
							
								        key: () => 'serialized'
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								      browser: { serialize: true }
							 | 
						||
| 
								 | 
							
								    })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    console.error = consoleError
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    logger.child({ key: 'test' }).fatal({ test: 'test' })
							 | 
						||
| 
								 | 
							
								    end()
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  test('child serializers apply to child bindings', ({ end, is }) => {
							 | 
						||
| 
								 | 
							
								    const consoleError = console.error
							 | 
						||
| 
								 | 
							
								    console.error = function (binding) {
							 | 
						||
| 
								 | 
							
								      is(binding.key, 'serialized')
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    const logger = fresh('../browser', require)({
							 | 
						||
| 
								 | 
							
								      browser: { serialize: true }
							 | 
						||
| 
								 | 
							
								    })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    console.error = consoleError
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    logger.child({
							 | 
						||
| 
								 | 
							
								      key: 'test'
							 | 
						||
| 
								 | 
							
								    }, {
							 | 
						||
| 
								 | 
							
								      serializers: {
							 | 
						||
| 
								 | 
							
								        key: () => 'serialized'
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }).fatal({ test: 'test' })
							 | 
						||
| 
								 | 
							
								    end()
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('child does not overwrite parent serializers', ({ end, is }) => {
							 | 
						||
| 
								 | 
							
								  let c = 0
							 | 
						||
| 
								 | 
							
								  const parent = pino({
							 | 
						||
| 
								 | 
							
								    serializers: parentSerializers,
							 | 
						||
| 
								 | 
							
								    browser: {
							 | 
						||
| 
								 | 
							
								      serialize: true,
							 | 
						||
| 
								 | 
							
								      write (o) {
							 | 
						||
| 
								 | 
							
								        c++
							 | 
						||
| 
								 | 
							
								        if (c === 1) is(o.test, 'parent')
							 | 
						||
| 
								 | 
							
								        if (c === 2) {
							 | 
						||
| 
								 | 
							
								          is(o.test, 'child')
							 | 
						||
| 
								 | 
							
								          end()
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								  const child = parent.child({}, { serializers: childSerializers })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  parent.fatal({ test: 'test' })
							 | 
						||
| 
								 | 
							
								  child.fatal({ test: 'test' })
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('children inherit parent serializers', ({ end, is }) => {
							 | 
						||
| 
								 | 
							
								  const parent = pino({
							 | 
						||
| 
								 | 
							
								    serializers: parentSerializers,
							 | 
						||
| 
								 | 
							
								    browser: {
							 | 
						||
| 
								 | 
							
								      serialize: true,
							 | 
						||
| 
								 | 
							
								      write (o) {
							 | 
						||
| 
								 | 
							
								        is(o.test, 'parent')
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const child = parent.child({ a: 'property' })
							 | 
						||
| 
								 | 
							
								  child.fatal({ test: 'test' })
							 | 
						||
| 
								 | 
							
								  end()
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('children serializers get called', ({ end, is }) => {
							 | 
						||
| 
								 | 
							
								  const parent = pino({
							 | 
						||
| 
								 | 
							
								    test: 'this',
							 | 
						||
| 
								 | 
							
								    browser: {
							 | 
						||
| 
								 | 
							
								      serialize: true,
							 | 
						||
| 
								 | 
							
								      write (o) {
							 | 
						||
| 
								 | 
							
								        is(o.test, 'child')
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const child = parent.child({ a: 'property' }, { serializers: childSerializers })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  child.fatal({ test: 'test' })
							 | 
						||
| 
								 | 
							
								  end()
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('children serializers get called when inherited from parent', ({ end, is }) => {
							 | 
						||
| 
								 | 
							
								  const parent = pino({
							 | 
						||
| 
								 | 
							
								    test: 'this',
							 | 
						||
| 
								 | 
							
								    serializers: parentSerializers,
							 | 
						||
| 
								 | 
							
								    browser: {
							 | 
						||
| 
								 | 
							
								      serialize: true,
							 | 
						||
| 
								 | 
							
								      write: (o) => {
							 | 
						||
| 
								 | 
							
								        is(o.test, 'pass')
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const child = parent.child({}, { serializers: { test: () => 'pass' } })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  child.fatal({ test: 'fail' })
							 | 
						||
| 
								 | 
							
								  end()
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('non overridden serializers are available in the children', ({ end, is }) => {
							 | 
						||
| 
								 | 
							
								  const pSerializers = {
							 | 
						||
| 
								 | 
							
								    onlyParent: () => 'parent',
							 | 
						||
| 
								 | 
							
								    shared: () => 'parent'
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const cSerializers = {
							 | 
						||
| 
								 | 
							
								    shared: () => 'child',
							 | 
						||
| 
								 | 
							
								    onlyChild: () => 'child'
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  let c = 0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const parent = pino({
							 | 
						||
| 
								 | 
							
								    serializers: pSerializers,
							 | 
						||
| 
								 | 
							
								    browser: {
							 | 
						||
| 
								 | 
							
								      serialize: true,
							 | 
						||
| 
								 | 
							
								      write (o) {
							 | 
						||
| 
								 | 
							
								        c++
							 | 
						||
| 
								 | 
							
								        if (c === 1) is(o.shared, 'child')
							 | 
						||
| 
								 | 
							
								        if (c === 2) is(o.onlyParent, 'parent')
							 | 
						||
| 
								 | 
							
								        if (c === 3) is(o.onlyChild, 'child')
							 | 
						||
| 
								 | 
							
								        if (c === 4) is(o.onlyChild, 'test')
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const child = parent.child({}, { serializers: cSerializers })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  child.fatal({ shared: 'test' })
							 | 
						||
| 
								 | 
							
								  child.fatal({ onlyParent: 'test' })
							 | 
						||
| 
								 | 
							
								  child.fatal({ onlyChild: 'test' })
							 | 
						||
| 
								 | 
							
								  parent.fatal({ onlyChild: 'test' })
							 | 
						||
| 
								 | 
							
								  end()
							 | 
						||
| 
								 | 
							
								})
							 |