text: // Includes
  var http = require('./http.js').func
  var getHash = require('./getHash.js').func
  var getVerificationInputs = require('./getVerificationInputs.js').func
  var cache = require('../cache')
  var URL = require('url').URL
  
  // Args
  exports.required = ['url']
  exports.optional = ['ignoreCache', 'getBody', 'jar']
  
  // Define
  function getVerification(jar, url, getBody) {
  	var httpOpt = {
  		url: url,
  		options: {
  			resolveWithFullResponse: true,
  			jar: jar
  		}
  	}
  	return http(httpOpt)
  		.then(function (res) {
  			var inputs = getVerificationInputs({ html: res.body })
  			var match
  			if (res.headers && res.headers['set-cookie']) {
  				match = res.headers['set-cookie'].toString().match(/__RequestVerificationToken=(.*?);/)
  			}
  			return {
  				body: (getBody ? res.body : null),
  				inputs: inputs,
  				header: match && match[1]
  			}
  		})
  }
  
  exports.func = function (args) {
  	var jar = args.jar
  	if (args.ignoreCache) {
  		return getVerification(jar, args.url, args.getBody)
  	} else {
  		return cache.wrap('Verify', new URL(args.url).pathname + getHash({ jar: jar }), function () {
  			return getVerification(jar, args.url, args.getBody)
  		})
  	}
  }
  